La partie la plus difficile de l'intégration avec Google Drive crée une application Web à l'aide de Console Google .

C'est bien documenté .
Cependant, étant donné que la portée requise pour accéder à Google Drive est plus sensible que, disons, Intégration Google Sheet de JMP , l'intégration à Google Drive ne fait actuellement pas partie de JMP depuis JMP 17.
Cela étant dit, j'ai rencontré un utilisateur de JMP au cours de la récente Découverte JMP qui collectait des données et les stockait sur Google Drive. Le format des données était CSV pour diverses raisons, mais principalement en raison des limitations de Google Sheet. Il a déclaré que sa vie (et celle de ses collègues) serait plus facile s'il pouvait transférer régulièrement les données csv dans JMP afin qu'elles puissent être analysées. Il savait qu'il pouvait télécharger le fichier csv puis l'importer dans JMP, mais il cherchait vraiment "le bouton facile".
Je suis donc allé parcourir mes notes sur la console Google et comment enregistrer une application Web. Vous pouvez facilement en obtenir un développeur (comme je l'ai fait), mais Google vous limitera le trafic qu'il a à moins que vous ne passiez par leur Processus de vérification .
Ce que je recommande vivement, même s'il ne s'agit que d'une application interne.
Ainsi, après [insérez votre nombre d'heures avec la console Google], vous disposerez des pièces nécessaires pour vous connecter à Google Drive avec JMP.
- redirect_url
- identité du client
- client_secret
Tout ce que vous avez utilisé lors de l'enregistrement de votre application lorsque vous avez sélectionné OAuth2 autorisation.
N'oubliez pas que puisque vous utilisez votre application, vous devez vous assurer que vous avez activé les API Google Drive.

L'autre élément important est portée . L'étendue contrôle les autorisations qu'un utilisateur accorde lorsqu'il se connecte à l'application Web enregistrée. Il est totalement dépend des API Google que vous souhaitez utiliser. Par exemple, le script joint utilise :
Openid et Profile sont "standard" quand authentifier et autoriser, tandis que les champs d'application restants sont tenus de lire et télécharger des données à partir de votre lecteur Google . Si vous lisez encore, la bonne nouvelle est que l'index de script JMP contient un exemple d'authentification avec Google.

C'est le deuxième Exemple dans le Obtenir l'en-tête d'autorisation entrée, avec laquelle j'ai commencé lorsque j'ai écrit le script ci-joint. Dans le script, vous pouvez voir une correspondance biunivoque de redirect_url , identité du client, client_secret , etc avec les attributs que vous avez dans votre application Web enregistrée.
Dans le script ci-joint, j'ai ajouté un élément d'entretien ménager supplémentaire. Je voulais que l'expérience utilisateur soit, autoriser une fois, puis enregistrer le refresh_token localement afin que je ne sois plus invité à me reconnecter à Google. Lorsqu'il est enregistré localement, il est ne pas crypté, vous voudrez donc l'enregistrer dans un emplacement privé. Le script ci-joint utilise
- $USER_APPDATA/GoogleDriveTokens.json
Ce que cela fait, c'est charger le refresh_token à partir du disque (s'il est disponible) obtient un jeton d'accès de Google avec le refresh_token, puis vous êtes authentifié et autorisé . La dernière chose que fait le script est de le sauvegarder sur le disque. La Nouveau OAuth2() L'objet JSL continuera à recevoir des jetons si les actuels ont expiré à chaque fois oauth2 << Obtenir l'en-tête d'authentification () est utilisé. Dans ce cas, Get Auth Header est appelé chaque fois qu'une demande est faite à Google Drive.
Le flux général après l'authentification et l'autorisation ont eu lieu, c'est que le point de terminaison

Est utilisé pour énumérer les fichiers trouvés sur Google Drive. Par défaut , seulement 100 sont retournés, donc dans le script je l'augmente à 1000 (le maximum).
Il convient de noter que JMP 17 a
- demande << Envoyer( "afficher la progression du téléchargement" );
Cela affichera une barre de progression pour les longues opérations de requête HTTP.
Le retour de la LE REPOS l'appel est JSON , qui se transforme en un Tableau associatif avec ParserJON . Si vous avez du mal à visualiser la structure de données JSON (ce que je fais parfois), je copie/colle le JSON dans le Extension de l'éditeur JSON pour Chrome.
Lorsque le script traite les fichiers renvoyés, il conserve les métadonnées pour
La partie importante des métadonnées est la ID de fichier . Google utilise un ID de fichier lors de l'accès ultérieur aux fichiers sur Google Drive. Dans notre cas, nous voulons télécharger les fichiers .csv et .csv.gz et les ouvrir dans JMP. Ainsi, le script boucle sur les file_ids de l'étape précédente et télécharge les données.

La clé pour obtenir le contenu du fichier est :
- QueryString(["alt" => "media"])
Il indique à Google Drive de renvoyer le contenu du fichier à JMP. Le script vérifie le mimeType du fichier à partir des métadonnées du fichier, mais peut également vérifier le mimeType à partir de la requête HTTP.
Dans tous les cas, le mimeType :
doit être décompressé pour obtenir le contenu csv tandis que le mimeType
est le contenu d'un fichier csv lui-même
Enfin, une fois le contenu obtenu (et décompressé si besoin)
- dt = Ouvrir(blob, texte); // pas besoin d'enregistrer dans le système de fichiers avant d'ouvrir
gérera l'ouverture des données sans paginer le système
J'espère que ce script sera suffisant pour vous donner une longueur d'avance sur l'intégration avec Google Drive. J'ai trouvé cela intrigant et j'apprécie que le client pose la question.
BTW Si vous êtes bloqué sur la console Google, vous pouvez poser la question ici. Je (ou quelqu'un d'autre) pourrais peut-être aider.