La parte più difficile dell'integrazione con Google Drive sta creando un'applicazione web utilizzando il Google Console .

È bene documentato .
Tuttavia, poiché l'ambito richiesto per l'accesso a Google Drive è più sensibile di quello che diciamo, Integrazione con Google Sheet di JMP , l'integrazione con Google Drive non fa attualmente parte di JMP a partire da JMP 17.
Detto questo, mi sono imbattuto in un utente JMP durante il recente Scoperta JMP che stava raccogliendo dati e archiviandoli su Google Drive. Il formato dei dati era csv per vari motivi, ma principalmente a causa delle limitazioni di Google Sheet. Ha detto che la sua vita (e quella dei suoi colleghi) sarebbe stata più facile se avesse potuto ottenere regolarmente i dati CSV in JMP in modo che potessero essere analizzati. Sapeva di poter scaricare il file CSV e poi importarlo in JMP, ma stava davvero cercando "il pulsante facile".
Quindi sono andato a leggere le mie note su Google Console e come registrare un'app web. Puoi facilmente ottenerne uno sviluppatore (come ho fatto io), ma Google ti limiterà sul traffico che ha a meno che tu non passi attraverso il loro processo di verifica .
Che consiglio vivamente, anche se è solo un'app interna.
Quindi, dopo [inserire il numero di ore con Google Console], avrai i pezzi necessari per accedere a Google Drive con JMP.
- reindirizzamento_url
- Identificativo cliente
- cliente_segreto
Tutto ciò che hai utilizzato durante la registrazione della tua app quando hai selezionato OAuth2 autorizzazione.
Ricorda, poiché stai utilizzando la tua app, ti consigliamo di assicurarti di aver abilitato le API di Google Drive.

L'altro pezzo importante è scopo . L'ambito controlla le autorizzazioni concesse da un utente durante la connessione all'app Web registrata. è completamente a seconda delle API di Google che desideri utilizzare. Ad esempio, lo script allegato utilizza:
Openid e Profile sono "standard" quando autenticare e autorizzare, mentre gli ambiti rimanenti sono tenuti a leggi e scarica i dati dal tuo Google Drive . Se stai ancora leggendo, la buona notizia è che il JMP Scripting Index ha un esempio di autenticazione con Google.

È il secondo esempio nel Ottieni intestazione di autorizzazione entry, con cui ho iniziato quando ho scritto lo script allegato. Nello script puoi vedere una corrispondenza uno a uno di reindirizzamento_url , Identificativo cliente, cliente_segreto , ecc con gli attributi che hai nella tua app web registrata.
Nello script allegato, ho aggiunto un ulteriore articolo per le pulizie. Volevo che l'esperienza dell'utente fosse, autorizzare una volta e quindi salvare il file refresh_token localmente, quindi non mi verrà chiesto di accedere nuovamente a Google. Se salvato localmente, lo è non crittografato, quindi ti consigliamo di salvarlo in una posizione privata. Lo script allegato utilizza
- $USER_APPDATA/GoogleDriveTokens.json
Quello che fa è caricare il refresh_token dal disco (se è disponibile) ottiene un token di accesso da Google con il refresh_token, e poi sei autenticato e autorizzato . L'ultima cosa che fa lo script è salvarlo di nuovo su disco. Il Nuovo OAuth2() L'oggetto JSL continuerà a ricevere i token se quelli correnti sono scaduti ogni volta oauth2 << Ottieni intestazione autenticazione() viene usato. In questo caso, Get Auth Header viene chiamato ogni volta che viene effettuata una richiesta a Google Drive.
Il flusso generale dopo l'autenticazione e l'autorizzazione è avvenuta sia che l'endpoint

Viene utilizzato per enumerare i file trovati su Google Drive. Di predefinito , solo 100 vengono restituiti, quindi nello script lo aumento a 1000 (il massimo).
Vale la pena notare che JMP 17 ha
- richiesta << Invia( "mostra download avanzamento" );
Questo mostrerà una barra di avanzamento per lunghe operazioni di richiesta HTTP.
Il ritorno dal RIPOSO chiamata è JSON , che si trasforma in un Array associativo insieme a AnalizzaJON . Se hai problemi a visualizzare la struttura dei dati JSON (cosa che a volte faccio) copio/incollo il JSON nel Estensione dell'editor JSON per Chrome.
Poiché lo script elabora i file restituiti, conserva i metadati per
La parte importante dei metadati è il fileid . Google utilizza un fileid nel successivo accesso ai file a Google Drive. Nel nostro caso, vogliamo scaricare i file .csv e .csv.gz e aprirli in JMP. Quindi lo script esegue un loop sui file_id del passaggio precedente e scarica i dati.

La chiave per ottenere il contenuto del file è:
- QueryString(["alt" => "media"])
Indica a Google Drive di inviare il contenuto del file a JMP. Lo script controlla il mimeType del file dai metadati del file, ma potrebbe anche controllare il mimeType dalla richiesta HTTP.
In ogni caso, il mimeType:
deve essere decompresso per ottenere il contenuto csv mentre mimeType
è il contenuto di un file CSV stesso
Infine, una volta ottenuti i contenuti (ed eventualmente decompressi)
- dt = Apri(BLOB, testo); //non è necessario salvare nel file system prima dell'apertura
gestirà l'apertura dei dati senza eseguire il paging nel sistema
Speriamo che questo script sia sufficiente per darti un vantaggio sull'integrazione con Google Drive. L'ho trovato intrigante e apprezzo che il cliente abbia posto la domanda.
A proposito, se rimani bloccato su Google Console, puoi porre la domanda qui. Io (o qualcun altro) potrei aiutare.