Étant donné que les projets Apps Script résident sur Google Drive, les développeurs peuvent importer et exporter le code source Apps Script à l'aide de l'API Google Drive (à ne pas confondre avec le service Drive dans Apps Script).
Par exemple, un développeur peut écrire du code Apps Script sur sa machine locale avec son éditeur de code favori et utiliser un système de contrôle des versions comme Git pour collaborer avec d'autres développeurs. Une fois une version finalisée, elle peut importer les fichiers dans Google Drive à l'aide de l'API REST, où ils peuvent être utilisés comme n'importe quel autre projet Apps Script.
Les modifications de code peuvent être apportées aux versions locales et synchronisées avec le projet Apps Script à l'aide de l'API Google Drive. Les projets existants peuvent être téléchargés (exportés) depuis Google Drive vers un ordinateur local.
Fonctionnalités et limites
Si vous souhaitez utiliser l'API Google Drive pour importer ou exporter des projets, tenez compte des points suivants :
- Les fichiers de script côté serveur doivent se terminer par ".gs". Vous pouvez développer localement à l'aide de fichiers .js, mais assurez-vous de les renommer en incluant une extension .gs avant de les importer dans Google Drive.
- Les fichiers de script côté client doivent se terminer par ".html". Cela inclut les fichiers .html, .js ou .css côté client. Encore une fois, vous pouvez développer localement à l'aide d'autres extensions, mais il est important d'avoir l'extension .html avant d'importer dans Google Drive.
- Lorsque vous importez des fichiers de projet dans Google Drive, toutes les données existantes dans ces fichiers sont remplacées. Vous ne pouvez pas ajouter ni insérer de texte partiel. Vous devez mettre à jour l'intégralité du fichier.
- Les fichiers de script côté serveur doivent contenir du code JavaScript valide. Si vos fichiers .js de serveur contiennent des erreurs, l'appel de mise à jour de l'API Google Drive échouera avec une erreur 5xx. Pour éviter cela, analysez votre code avant de l'importer.
- Les fichiers vides ne peuvent pas être importés. L'appel de mise à jour de l'API Google Drive échouera avec une erreur 5xx si vous essayez d'importer un fichier vide.
- Seuls les scripts autonomes peuvent être importés ou exportés. Les scripts associés à un conteneur ne sont pas accessibles via l'API Google Drive.
- Seul le code source peut être importé ou exporté. Les ressources telles que les propriétés ou les journaux du projet ne sont pas non plus exposées via l'API Google Drive. Il n'est pas possible d'effectuer des actions telles que la gestion des versions, la publication ou l'exécution d'un script via l'API Google Drive.
- Vous n'êtes pas limité à un seul fichier
Code.gs
de serveur. Vous pouvez répartir le code du serveur sur plusieurs fichiers pour faciliter le développement. Tous les fichiers serveur sont chargés dans le même espace de noms global. Utilisez donc des classes JavaScript lorsque vous souhaitez fournir une encapsulation sécurisée.
API Drive
L'API Google Drive permet aux développeurs d'accéder aux fichiers Google Drive de manière programmatique. Cette API utilise GET
pour télécharger des fichiers et PUT/POST
pour en importer. Pour obtenir une documentation détaillée et des guides de démarrage rapide, veuillez consulter la page de présentation de l'API Google Drive.
Ce guide se concentre sur la liste et le déplacement de fichiers avec la ressource Files à l'aide des appels suivants :
Autorisation
Toutes les requêtes adressées à l'API Google Drive doivent être autorisées par un utilisateur authentifié via le protocole OAuth 2.0. Pour en savoir plus, consultez la documentation sur l'autorisation de l'API Google Drive.
En plus des autres scopes dont une application peut avoir besoin (comme https://www.googleapis.com/auth/drive
), toutes les applications qui tentent d'importer ou d'exporter des projets Google Apps Script doivent demander le scope spécial suivant :
https://www.googleapis.com/auth/drive.scripts
Lister les projets existants
Pour lister tous les projets Apps Script dans votre Drive, utilisez la ressource Files pour rechercher les fichiers dont le type MIME est application/vnd.google-apps.script
.
Pour filtrer la réponse et n'inclure que les fichiers dont vous êtes propriétaire, incluez le paramètre de recherche 'me' in owners
.
Voici un exemple de requête et de réponse qui montre un tableau de projets Apps Script renvoyés dans une réponse JSON.
GET https://www.googleapis.com/drive/v2/files?q=mimeType%3D'application%2Fvnd.google-apps.script'+and+'me'+in+owners Authorization: Bearer ya29.fakebearerstring
{ "kind": "drive#fileList", "etag": "\"kjsas92/f3zGUXczKMxEB_9ZTMRFOF3d1ZU\"", "selfLink": "https://www.googleapis.com/drive/v2/files?q=mimeType%3D'application/vnd.google-apps.script'+and+'me'+in+owners", "items": [ { "kind": "drive#file", "id": "1vi0uwcMdHsRv1YFtgq7XdiTGSdqgjIYpdQNC0A_Udn79LOhH0vYL132D", "etag": "\"kjsas92/MTM3MDk3ODY5ODQyNg\"", "selfLink": "https://www.googleapis.com/drive/v2/files/1vi0uwcMdHsRv1YFtgq7XdiTGSdqgjIYpdQNC0A_Udn79LOhH0vYL132D", "alternateLink": "https://script.google.com/a/google.com/d/1vi0uwcMdHsRv1YFtgq7XdiTGSdqgjIYpdQNC0A_Udn79LOhH0vYL132D/edit?usp=drivesdk", "iconLink": "https://ssl.gstatic.com/docs/doclist/images/icon_11_script_list.png", "title": "Mail merge", "mimeType": "application/vnd.google-apps.script", "description": "", "labels": { "starred": false, "hidden": false, "trashed": true, "restricted": false, "viewed": true }, "createdDate": "2013-06-11T19:24:45.188Z", "modifiedDate": "2013-06-11T19:24:58.426Z", "modifiedByMeDate": "2013-06-11T19:24:58.426Z", "lastViewedByMeDate": "2013-06-11T19:24:58.426Z", "parents": [ { "kind": "drive#parentReference", "id": "0APdyIOzo7bWDUk9PVA", "selfLink": "https://www.googleapis.com/drive/v2/files/1vi0uwcMdHsRv1YFtgq7XdiTGSdqgjIYpdQNC0A_Udn79LOhH0vYL132D/parents/0APdyIOzo7bWDUk9PVA", "parentLink": "https://www.googleapis.com/drive/v2/files/0APdyIOzo7bWDUk9PVA", "isRoot": true } ], "exportLinks": { "application/json": "https://script.google.com/feeds/download/export?id=1234567890abcefghijklmnopqrstuvwxyz&format=json" }, "userPermission": { "kind": "drive#permission", "etag": "\"kjsas92/259X2r5DVstv1CcIQTjt_RQPSW8\"", "id": "me", "selfLink": "https://www.googleapis.com/drive/v2/files/1vi0uwcMdHsRv1YFtgq7XdiTGSdqgjIYpdQNC0A_Udn79LOhH0vYL132D/permissions/me", "role": "owner", "type": "user" }, "quotaBytesUsed": "0", "ownerNames": [ "John Doe" ], "owners": [ { "kind": "drive#user", "displayName": "John Doe", "picture": { "url": "https://lh4.googleusercontent.com/-yd1rIb6Pe2Y/AAAAAAAAAAI/AAAAAAAAAGs/PP5vTuZonik/s64/photo.jpg" }, "isAuthenticatedUser": true, "permissionId": "1234566789" } ], "lastModifyingUserName": "John Doe", "lastModifyingUser": { "kind": "drive#user", "displayName": "John Doe", "picture": { "url": "https://lh4.googleusercontent.com/-yd1rIb6Pe2Y/AAAAAAAAAAI/AAAAAAAAAGs/PP5vTuZonik/s64/photo.jpg" }, "isAuthenticatedUser": true, "permissionId": "1234566789" }, "editable": true, "writersCanShare": true, "shared": false, "explicitlyTrashed": true, "appDataContents": false } ] }
Si vous connaissez l'ID de fichier d'un projet Apps Script, vous pouvez l'extraire directement avec l'appel d'API suivant :
GET https://www.googleapis.com/drive/v2/files/1234567890abcefghijklmnopqrstuvwxyz
Authorization: Bearer ya29.fakebearerstring
Exporter des projets depuis Drive
Une fois que vous avez récupéré une ressource File
de l'API, la propriété exportLinks
contient une URL à extraire pour obtenir le contenu du projet sous forme de données JSON. Voici un exemple de ce à quoi cette URL pourrait ressembler :
https://script.google.com/feeds/download/export?id=1234567890abcefghijklmnopqrstuvwxyz&format=json
Envoyez une requête à cette URL pour récupérer le contenu du projet lui-même.
Assurez-vous d'inclure un en-tête Authorization
avec le même jeton OAuth Bearer
.
Voici un exemple de requête et de réponse :
GET https://script.google.com/feeds/download/export?id=1234567890abcefghijklmnopqrstuvwxyz&format=json Authorization: Bearer ya29.fakebearerstring
{ "files": [ { "id":"9basdfbd-749a-4as9b-b9d1-d64basdf803", "name":"Code", "type":"server_js", "source":"function doGet() {\n return HtmlService.createHtmlOutputFromFile(\u0027index\u0027);\n}\n" }, { "id":"3asf7c0d-1afb-4a9-8431-5asdfc79e7ae", "name":"index", "type":"html", "source":"\u003chtml\u003e\n \u003cbody\u003e\n Hello, world!\n \u003c/body\u003e\n\u003c/html\u003e" } ] }
L'exemple ci-dessus inclut le code d'une application Web simple tiré du guide HTML Service. Notez que vous obtenez un tableau de Files
, chacun avec les quatre propriétés suivantes :
.
id |
Identifiant interne d'un fichier dans un projet, nécessaire pour référencer ce fichier lors des mises à jour. |
name |
Nom du fichier sans extension, tel qu'il s'affiche dans l'éditeur de script. |
type |
Les deux types de fichiers sont server_js et html. |
source |
Code source encodé contenu dans le fichier. |
Importer des projets dans Drive
Pour mettre à jour un projet existant, effectuez un appel HTTP PUT
à l'API update
avec le fileId
approprié.
L'exemple ci-dessous montre un exemple de transaction pour la partie "importation de fichiers multimédias". Grâce à l'une des bibliothèques clientes, votre application peut facilement inclure les métadonnées et le contenu multimédia dans le même appel d'importation. Notez que l'en-tête Content-Type
spécifie le type de contenu importé dans ce cas.
PUT https://www.googleapis.com/upload/drive/v2/files/1234567890abcefghijklmnopqrstuvwxyz Authorization: Bearer ya29.fakebearerestring Content-Type: application/vnd.google-apps.script+json
{ "files": [ { "id":"9basdfbd-749a-4as9b-b9d1-d64basdf803", "name":"Code", "type":"server_js", "source":"function doGet() {\n return HtmlService.createHtmlOutputFromFile(\u0027index\u0027);\n}\n" }, { "id":"3asf7c0d-1afb-4a9-8431-5asdfc79e7ae", "name":"index", "type":"html", "source":"\u003chtml\u003e\n \u003cbody\u003e\n New message!!\n \u003c/body\u003e\n\u003c/html\u003e" } ] }
Créer des fichiers dans un projet
Pour créer un fichier dans un projet, envoyez une requête PUT
pour un fichier sans la propriété id
. Si vous incluez un fichier avec un identifiant inconnu, le système affichera un message d'erreur.
Supprimer des fichiers dans un projet
Pour supprimer un fichier d'un projet, envoyez une requête PUT
qui n'inclut pas ce fichier (mais qui inclut tous les autres fichiers du projet). Tout fichier qui n'est pas renvoyé pendant le processus d'importation sera supprimé du serveur.
Renommer des fichiers dans un projet
Pour renommer un fichier dans un projet, envoyez une requête PUT
avec le id
existant, mais un nouveau name
. Notez que le serveur ignore toute tentative de modification de type
.
Créer un projet
Pour créer un projet, envoyez une requête POST
à l'API insert
. Comme pour l'appel update
, vous pouvez utiliser une bibliothèque cliente pour inclure des métadonnées telles que le nom et la description du projet.
Voici un exemple de transaction d'importation de contenu multimédia. Un projet intitulé "Sans titre" sera créé dans votre Drive. Le paramètre convert
est obligatoire dans l'URL.
Comme pour l'appel update
, l'en-tête Content-Type
est obligatoire.
POST https://www.googleapis.com/upload/drive/v2/files?convert=true Authorization: Bearer ya29.fakebearerestring Content-Type: application/vnd.google-apps.script+json
{ "files": [ { "name":"Code", "type":"server_js", "source":"function doGet() {\n return HtmlService.createHtmlOutputFromFile(\u0027index\u0027);\n}\n" }, { "name":"index", "type":"html", "source":"\u003chtml\u003e\n \u003cbody\u003e\n Hello, world!!\n \u003c/body\u003e\n\u003c/html\u003e" } ] }