와 통합할 때 가장 어려운 부분 구글 드라이브 를 사용하여 웹 애플리케이션을 만들고 있습니다. 구글 콘솔 .

그것은 잘 문서화 .
하지만 구글 드라이브에 접근하는데 필요한 범위는 말보다 민감하기 때문에, JMP의 Google 시트 통합 , Google 드라이브와의 통합은 현재 JMP 17부터 JMP의 일부가 아닙니다.
그런데 최근에 JMP 사용자를 만났습니다. JMP 디스커버리 데이터를 수집하고 Google 드라이브에 저장하는 것이었습니다. 데이터 형식은 CSV 여러 가지 이유가 있지만 주로 Google 시트 제한 때문입니다. 그는 csv 데이터를 정기적으로 JMP에 가져와 분석할 수 있다면 자신의 삶(및 동료)이 더 쉬울 것이라고 말했습니다. 그는 csv 파일을 다운로드한 다음 JMP로 가져올 수 있다는 것을 알고 있었지만 실제로는 "쉬운 버튼"을 찾고 있었습니다.
그래서 저는 Google 콘솔에 대한 메모와 웹 앱 등록 방법을 살펴보았습니다. 개발자를 쉽게 구할 수 있지만(나처럼) 검증 프로세스 .
내부 앱일지라도 적극 권장합니다.
따라서 [Google 콘솔로 시간을 입력] 후에 JMP를 사용하여 Google 드라이브에 로그인하는 데 필요한 정보를 얻을 수 있습니다.
- 리디렉션 URL
- client_id
- client_secret
선택 시 앱 등록 시 사용한 모든 것 OAuth2 권한 부여.
앱을 사용하고 있으므로 Google Drive API를 활성화했는지 확인해야 합니다.

다른 중요한 부분은 범위 . 범위는 등록된 웹 앱에 연결할 때 사용자가 허용하는 권한을 제어합니다. 그것은이다 완전히 사용하려는 Google API에 따라 다릅니다. 예를 들어 첨부된 스크립트는 다음을 사용합니다.
Openid 및 Profile은 다음과 같은 경우 "표준"입니다. 인증 및 권한 부여, 나머지 범위는 Google 드라이브에서 데이터 읽기 및 다운로드 . 아직 읽고 있다면 좋은 소식은 JMP Scripting Index에 Google로 인증하는 예가 있다는 것입니다.

그것은 초 예시 에서 승인 헤더 가져오기 첨부된 스크립트를 작성할 때 시작했던 항목입니다. 스크립트에서 일대일 대응을 볼 수 있습니다. 리디렉션 URL , 클라이언트 ID, client_secret , 등 등록된 웹 앱에 있는 속성을 사용합니다.
첨부된 스크립트에서 하우스키핑 항목을 추가로 추가했습니다. 나는 사용자 경험이 한 번 인증하고 저장하기를 원했습니다. 새로고침_토큰 Google에 다시 로그인하라는 메시지가 표시되지 않습니다. 로컬에 저장하면 ~ 아니다 암호화되어 개인 위치에 저장하는 것이 좋습니다. 첨부된 스크립트는
- $USER_APPDATA/GoogleDriveTokens.json
이것이 하는 일은 디스크(사용 가능한 경우)에서 refresh_token을 로드하는 것입니다. access_token Google에서 refresh_token을 사용하면 인증 및 권한 부여 . 스크립트가 수행하는 마지막 작업은 디스크에 다시 저장하는 것입니다. 그만큼 새로운 OAuth2() JSL 객체는 현재 토큰이 매번 만료되는 경우 토큰을 계속 가져옵니다. oauth2 << 인증 헤더 가져오기() 사용. 이 경우 Google 드라이브에 요청이 있을 때마다 Get Auth Header가 호출됩니다.
일반적인 흐름 ~ 후에 인증 및 권한 부여가 이루어졌음을 의미합니다.

Google 드라이브에서 찾은 파일을 열거하는 데 사용됩니다. 에 의해 기본 , 뿐 100 반환되므로 스크립트에서 다음으로 늘립니다. 1000 (최대).
JMP 17에는
- 요청 << 보내기( "다운로드 진행률 표시" );
긴 HTTP 요청 작업에 대한 진행률 표시줄이 표시됩니다.
귀환 쉬다 전화는 JSON 로 바뀌는 , 연관 배열 ~와 함께 ParseJON . JSON 데이터 구조를 시각화하는 데 문제가 있는 경우(때때로 수행) JSON을 복사/붙여넣기 JSON 편집기 확장 크롬용.
스크립트는 반환된 파일을 처리할 때 메타데이터를 유지합니다.
메타데이터의 중요한 부분은 파일 ID . Google은 Google 드라이브에 대한 후속 파일 액세스에서 fileid를 사용합니다. 우리의 경우 .csv 및 .csv.gz 파일을 다운로드하여 JMP에서 열고 싶습니다. 따라서 스크립트는 이전 단계의 file_ids를 반복하고 데이터를 다운로드합니다.

파일 내용을 가져오는 핵심은 다음과 같습니다.
- QueryString(["alt" => "미디어"])
파일 내용을 다시 JMP로 보내도록 Google 드라이브에 지시합니다. 스크립트는 다음을 확인합니다. 마임 유형 파일 메타데이터에서 파일의 일부를 확인할 수 있지만 HTTP 요청에서 mimeType을 확인할 수도 있습니다.
어쨌든 mimeType:
mimeType 동안 csv 내용을 가져오려면 압축을 풀어야 합니다.
csv 파일 자체의 내용입니다.
마지막으로 콘텐츠를 얻은 후(필요한 경우 압축 해제)
- dt = 열기(블롭, 텍스트); //열기 전에 파일 시스템에 저장할 필요 없음
시스템에 페이징하지 않고 데이터 열기를 처리합니다.
이 스크립트가 Google 드라이브와의 통합을 시작하기에 충분하기를 바랍니다. 나는 그것이 흥미롭다는 것을 알았고 고객이 질문을 해주셔서 감사합니다.
BTW Google 콘솔에서 멈춘 경우 여기에서 질문할 수 있습니다. 나(또는 다른 누군가)가 도울 수 있습니다.