Da sich Google Apps Script-Projekte in Google Drive befinden, können Entwickler Apps Script-Quellcode mit der Google Drive API importieren und exportieren. Diese API ist nicht mit dem Drive-Dienst in Apps Script zu verwechseln.
Ein Entwickler kann beispielsweise neuen Apps Script-Code auf ihrem lokalen Computer mit ihrem bevorzugten Code-Editor erstellen und ein Versionsverwaltungssystem wie Git verwenden, um mit anderen Entwicklern zusammenzuarbeiten. Wenn eine Version fertig ist, kann er die Dateien mit der REST API in Google Drive hochladen (importieren), wo sie wie jedes andere Apps Script-Projekt verwendet werden können.
Codeänderungen können an den lokalen Versionen vorgenommen und mit der Google Drive API mit dem Apps Script-Projekt synchronisiert werden. Vorhandene Projekte können aus Google Drive auf einen lokalen Computer heruntergeladen (exportiert) werden.
Funktionen und Beschränkungen
Wenn Sie die Google Drive API zum Importieren oder Exportieren von Projekten verwenden möchten, beachten Sie Folgendes:
- Serverseitige Skriptdateien müssen mit „.gs“ enden. Sie können lokal mit „.js“-Dateien entwickeln, müssen sie aber vor dem Importieren in Google Drive umbenennen und die Erweiterung „.gs“ hinzufügen.
- Clientseitige Skriptdateien müssen mit „.html“ enden. Dazu gehören clientseitige „.html“-, „.js“- oder „.css“-Dateien. Auch hier können Sie lokal mit anderen Erweiterungen entwickeln, aber vor dem Importieren in Google Drive muss die Erweiterung „.html“ vorhanden sein.
- Wenn Sie Projektdateien in Google Drive importieren, werden alle vorhandenen Daten in diesen Dateien überschrieben. Sie können keinen Teiltext anhängen oder einfügen. Die gesamte Datei muss aktualisiert werden.
- Serverseitige Skriptdateien müssen gültiges JavaScript enthalten. Wenn in Ihren serverseitigen „.js“-Dateien Fehler auftreten, schlägt der Google Drive API-Aktualisierungsaufruf mit einem 5xx-Fehler fehl. Sie können dies verhindern, indem Sie Ihren Code vor dem Importieren prüfen.
- Leere Dateien können nicht importiert werden. Der Google Drive API-Aktualisierungsaufruf schlägt mit einem 5xx-Fehler fehl, wenn Sie versuchen, eine leere Datei hochzuladen.
- Nur eigenständige Skripts können importiert oder exportiert werden. Auf containergebundene Skripts kann nicht über die Google Drive API zugegriffen werden.
- Nur Quellcode kann importiert oder exportiert werden. Ressourcen wie Projekteigenschaften oder Logs werden von der Google Drive API ebenfalls nicht verfügbar gemacht. Aktionen wie die Versionsverwaltung von Skripts, die Veröffentlichung oder die Ausführung des Skripts sind mit der Google Drive API nicht möglich.
- Sie sind nicht auf eine einzige serverseitige
Code.gsDatei beschränkt. Sie können den Servercode zur einfacheren Entwicklung auf mehrere Dateien verteilen. Alle Serverdateien werden in denselben globalen Namespace geladen. Verwenden Sie daher JavaScript-Klassen, wenn Sie eine sichere Kapselung bereitstellen möchten.
Drive API
Mit der Google Drive API können Entwickler programmatisch auf Dateien in Google Drive zugreifen. Diese API verwendet GET zum Herunterladen von Dateien und PUT/POST zum Hochladen von Dateien. Eine detaillierte Dokumentation und Schnellstarts finden Sie auf der Seite Google Drive API – Übersicht für.
In dieser Anleitung geht es um das Auflisten und Verschieben von Dateien mit der Ressource „Files“ mithilfe der folgenden Aufrufe:
Autorisierung
Alle Anfragen an die Google Drive API müssen von einem authentifizierten Nutzer über das OAuth 2.0-Protokoll autorisiert werden. Weitere Informationen finden Sie in der Dokumentation zur Autorisierung der Google Drive API.
Zusätzlich zu anderen Bereichen, die eine Anwendung möglicherweise benötigt
(z. B. https://www.googleapis.com/auth/drive), müssen alle Anwendungen, die versuchen,
Google Apps Script-Projekte zu importieren oder zu exportieren, den folgenden speziellen
Bereich anfordern:
https://www.googleapis.com/auth/drive.scripts
Verwenden Sie zum Testen der folgenden Beispielanfragen ein OAuth 2.0-Bearertoken, das Sie von dem OAuth 2.0 Playground erhalten haben.
Vorhandene Projekte auflisten
Wenn Sie alle Apps Script-Projekte in Google Drive auflisten möchten,
verwenden Sie die Ressource „Files“, um nach Dateien mit dem
MIME-Typ application/vnd.google-apps.script zu suchen. Wenn Sie die Antwort so filtern möchten, dass nur Dateien angezeigt werden, deren Eigentümer Sie sind,
fügen Sie den Suchparameter 'me' in owners ein.
Hier sehen Sie eine Beispielanfrage und -antwort, die ein Array von Apps Script-Projekten zeigt, das über eine JSON-Antwort zurückgegeben wird.
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 } ] }
Wenn Sie die Datei-ID eines Apps Script-Projekts kennen, können Sie sie mit dem folgenden API-Aufruf direkt abrufen:
GET https://www.googleapis.com/drive/v2/files/1234567890abcefghijklmnopqrstuvwxyz
Authorization: Bearer ya29.fakebearerstring
Die Datei-ID eines Projekts ist nicht mit dem Projektschlüssel identisch. Die Datei-ID ist der alphanumerische String in der URL des Projekts.
Projekte aus Drive exportieren
Sobald Sie eine File-Ressource von der API zurückerhalten,
enthält die Eigenschaft exportLinks eine URL, die Sie abrufen können, um den Inhalt von
dem Projekt als JSON-Daten zu erhalten. Hier sehen Sie ein Beispiel für diese URL:
https://script.google.com/feeds/download/export?id=1234567890abcefghijklmnopqrstuvwxyz&format=json
Senden Sie eine Anfrage an diese URL, um den Inhalt des Projekts abzurufen.
Achten Sie darauf, dass Sie einen Authorization-Header mit demselben OAuth-Bearer-Token einfügen.
Hier sehen Sie eine Beispielanfrage und -antwort:
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" } ] }
Das vorherige Beispiel enthält Code für eine Webanwendung aus der HTML
Service-Anleitung. Sie erhalten ein Array von Files zurück, die jeweils die folgenden vier Eigenschaften haben:
id |
Interne ID einer Datei in einem Projekt, die zum Referenzieren dieser Datei bei Aktualisierungen erforderlich ist. |
name |
Der Name der Datei ohne Erweiterungen, wie er im Skripteditor angezeigt wird. |
type |
Die beiden Dateitypen sind „server_js“ und „html“. |
source |
Der codierte Quellcode in der Datei. |
Projekte in Drive importieren
Wenn Sie ein vorhandenes Projekt aktualisieren möchten, senden Sie einen HTTP PUT-Aufruf an die API der Datei
update mit der entsprechenden fileId.
Das folgende Beispiel zeigt eine Beispieltransaktion für den Teil zum Hochladen von Medien. Mit einer der Clientbibliotheken kann Ihre Anwendung Metadaten und Medien ganz einfach in denselben Upload-Aufruf einfügen. Der Header Content-Type gibt in diesem Fall den Typ des hochgeladenen Inhalts an.
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" } ] }
Neue Dateien in einem Projekt erstellen
Wenn Sie eine neue Datei in einem Projekt erstellen möchten, senden Sie eine PUT-Anfrage für eine Datei ohne die Eigenschaft id. Wenn Sie eine Datei mit einer unbekannten ID einfügen, wird eine Fehlermeldung angezeigt.
Dateien in einem Projekt löschen
Wenn Sie eine Datei aus einem Projekt löschen möchten, senden Sie eine PUT-Anfrage, die diese Datei nicht enthält (aber alle anderen Dateien im Projekt enthält). Alle Dateien, die während des Importvorgangs nicht zurückgesendet werden, werden vom Server gelöscht.
Dateien in einem Projekt umbenennen
Wenn Sie eine Datei in einem Projekt umbenennen möchten, senden Sie eine PUT-Anfrage mit der vorhandenen id, aber einem neuen name. Der Server ignoriert alle Versuche, den type zu ändern.
Neues Projekt erstellen
Wenn Sie ein neues Projekt erstellen möchten, senden Sie eine POST Anfrage an die API der Datei
insert. Ähnlich wie beim Aufruf update können Sie eine Clientbibliothek verwenden, um Metadaten wie den Projektnamen und die Beschreibung einzufügen.
Hier sehen Sie eine Beispieltransaktion für den Medienupload. Dadurch wird in Google Drive ein Projekt mit dem Namen „Untitled“ erstellt. Der Parameter convert in der URL ist erforderlich. Wie beim Aufruf update ist der Header Content-Type erforderlich.
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" } ] }