Veröffentlichen Sie das Skript als Webanwendung, wenn Sie eine Benutzeroberfläche dafür erstellen. Ein Skript, mit dem Nutzer beispielsweise Termine mit Mitgliedern eines Supportteams vereinbaren können, sollte als Webanwendung präsentiert werden, damit Nutzer direkt über ihren Browser darauf zugreifen können.
Sowohl eigenständige Skripts als auch Skripts, die an Google Workspace-Anwendungen gebunden sind, können in Webanwendungen umgewandelt werden, sofern sie die folgenden Anforderungen erfüllen.
Anforderungen an Webanwendungen
Ein Skript kann als Webanwendung veröffentlicht werden, wenn es die folgenden Anforderungen erfüllt:
- Es enthält eine
doGet- oderdoPost-Funktion. - Die Funktion gibt ein HTML-Dienst
HtmlOutputObjekt oder ein Content-DienstTextOutputObjekt zurück.
Anfrageparameter
Wenn ein Nutzer eine App aufruft oder ein Programm eine HTTP-GET-Anfrage an die App sendet, führt Google Apps Script die Funktion doGet aus. Wenn ein Programm eine HTTP-POST-Anfrage an die App sendet, führt Apps Script stattdessen doPost aus. In beiden Fällen stellt das Argument e einen Ereignisparameter dar, der Informationen zu allen Anfrageparametern enthalten kann. Die Struktur des Ereignisobjekts ist in der folgenden Tabelle dargestellt:
| Felder | |
|---|---|
e.queryString |
Der Wert des Abfragestringteils der URL oder name=alice&n=1&n=2 |
e.parameter |
Ein Objekt mit Schlüssel/Wert-Paaren, die den Anfrage Parametern entsprechen. Für Parameter mit mehreren Werten wird nur der erste Wert zurückgegeben. {"name": "alice", "n": "1"} |
e.parameters |
Ein Objekt ähnlich {"name": ["alice"], "n": ["1", "2"]} |
e.pathInfo |
Der URL-Pfad nach |
e.contextPath |
Wird nicht verwendet, immer der leere String. |
e.contentLength |
Die Länge des Anfragetextes für POST-Anfragen oder 332 |
e.postData.length |
Identisch mit 332 |
e.postData.type |
Der MIME-Typ des POST-Textes text/csv |
e.postData.contents |
Der Inhaltstext des POST-Textes Alice,21 |
e.postData.name |
Immer der Wert „postData“ postData |
Übergeben Sie Parameter wie username und age an eine URL wie die folgende:
https://script.google.com/.../exec?username=jsmith&age=21
So werden die Parameter angezeigt:
function doGet(e) {
var params = JSON.stringify(e);
return ContentService.createTextOutput(params).setMimeType(ContentService.MimeType.JSON);
}
Im vorherigen Beispiel gibt doGet die folgende Ausgabe zurück:
{
"queryString": "username=jsmith&age=21",
"parameter": {
"username": "jsmith",
"age": "21"
},
"contextPath": "",
"parameters": {
"username": [
"jsmith"
],
"age": [
"21"
]
},
"contentLength": -1
}
Die folgenden Parameternamen sind vom System reserviert und sollten nicht in URL-Parametern oder POST-Texten verwendet werden:
csid
Die Verwendung dieser Parameter kann zu einer HTTP-405-Antwort mit der Fehlermeldung „Sorry, the file you have requested does not exist“ (Die angeforderte Datei ist nicht vorhanden) führen. Aktualisieren Sie Ihr Skript nach Möglichkeit, um andere Parameternamen zu verwenden.
Skript als Webanwendung bereitstellen
So stellen Sie ein Skript als Webanwendung bereit:
- Klicken Sie rechts oben im Skriptprojekt auf Bereitstellen > Neue Bereitstellung.
- Klicken Sie neben "Typ auswählen" auf Einstellungen für Bereitstellungstypen aktivieren > Webanwendung.
- Geben Sie die Informationen zu Ihrer Webanwendung in die Felder unter „Bereitstellung skonfiguration“ ein.
- Klicken Sie auf Bereitstellen.
Geben Sie die URL der Webanwendung für die Nutzer frei, die Ihre App verwenden sollen, sofern Sie ihnen Zugriff gewährt haben.
Webanwendungen, die in einer Domain bereitgestellt werden, funktionieren nicht mehr, wenn die Inhaberschaft zu einer geteilten Ablage oder einem Konto in einer anderen Domain geändert wird. Dieses Problem kann behoben werden, indem der neue Inhaber oder Mitbearbeiter die Webanwendung in der neuen Domain noch einmal bereitstellt. Alternativ dazu funktioniert die Webanwendung wieder für die ursprüngliche Domain, wenn sie wieder dorthin verschoben wird, ohne dass sie noch einmal bereitgestellt werden muss.
Bereitstellung einer Webanwendung testen
So testen Sie Ihr Skript als Webanwendung:
- Klicken Sie rechts oben im Skriptprojekt auf Bereitstellen > Bereitstellungen testen.
- Klicken Sie neben „Typ auswählen“ auf „Einstellungen für Bereitstellungstypen aktivieren“ > Webanwendung.
- Klicken Sie unter der URL der Webanwendung auf Kopieren.
Fügen Sie die URL in Ihren Browser ein und testen Sie Ihre Webanwendung.
Diese URL endet mit
/devund kann nur von Nutzern aufgerufen werden, die Bearbeitungszugriff auf das Skript haben. In dieser Instanz der App wird immer der zuletzt gespeicherte Code ausgeführt. Sie ist nur für Tests während der Entwicklung vorgesehen.
Wenn Sie die detaillierte OAuth-Funktion in der
Webanwendung testen möchten, darf Ihr Projekt noch keine Autorisierungen haben.
Verwenden Sie
ScriptApp.invalidateAuth, um alle vorhandenen Autorisierungen zu widerrufen.
Ändern Sie für alle Webanwendungen, die bereits bereitgestellt wurden und ausgeführt werden
unter der Identität des aktiven Nutzers, das executeAs
JSON-Feld im Manifest
in USER_DEPLOYING.
Wenn Sie Webanwendungen so bereitstellen, dass sie als Entwickler ausgeführt werden, gehen Sie sehr sorgfältig mit OAuth-Tokens um, die über ScriptApp.getOAuthTokenabgerufen wurden. Mit diesen Tokens können andere Anwendungen auf Ihre Daten zugreifen. Übertragen Sie sie daher niemals an den Client.
Berechtigungen
Die Berechtigungen für eine Webanwendung hängen davon ab, wie Sie die App ausführen möchten:
- Anwendung als ich ausführen: In diesem Fall wird das Skript immer als Sie, der Inhaber des Skripts, ausgeführt, unabhängig davon, wer auf die Webanwendung zugreift.
- Anwendung als Nutzer ausführen, der auf die Webanwendung zugreift: In diesem Fall wird das Skript unter der Identität des aktiven Nutzers ausgeführt, der die Webanwendung verwendet. Bei dieser Berechtigungsmethode wird in der Webanwendung die E‑Mail-Adresse des Skriptinhabers angezeigt, wenn der Nutzer den Zugriff autorisiert.
Um Missbrauch zu verhindern, legt Apps Script Beschränkungen für die Häufigkeit fest, mit der neue Nutzer eine Webanwendung autorisieren können, die als Nutzer ausgeführt wird. Diese Beschränkungen hängen unter anderem davon ab, ob das Veröffentlichungskonto Teil einer Google Workspace-Domain ist.
Sie können mit anderen Nutzern über eine geteilte Ablage an Webanwendungen zusammenarbeiten. Wenn eine Webanwendung in einer geteilten Ablage bereitgestellt wird und Sie die Option „Als ich ausführen“ auswählen, wird die Webanwendung unter der Berechtigung des Nutzers ausgeführt, der sie bereitgestellt hat, da es keinen Skriptinhaber gibt.
Webanwendung in Google Sites einbetten {:#embed-web-app}
Für eingebettete Webanwendungen gelten weiterhin Zugriffsberechtigungen, um Missbrauch zu verhindern. Wenn Ihre eingebettete Webanwendung nicht zu funktionieren scheint, prüfen Sie, ob die vom Inhaber der Webanwendung und vom Domainadministrator festgelegten Berechtigungen ihre Verwendung zulassen.
Damit eine Webanwendung in Sites eingebettet werden kann, muss sie zuerst bereitgestelltwerden. Außerdem benötigen Sie die bereitgestellte URL aus dem Dialogfeld Bereitstellen.
So betten Sie eine Webanwendung in eine Sites Seite ein:
- Öffnen Sie die Sites-Seite, auf der Sie die Webanwendung hinzufügen möchten.
- Wählen Sie Einfügen > URL einbetten aus.
- Fügen Sie die URL der Webanwendung ein und klicken Sie dann auf HINZUFÜGEN.
Die Webanwendung wird in einem Frame in der Seitenvorschau angezeigt. Wenn Sie die Seite veröffentlichen, müssen die Betrachter Ihrer Website die Webanwendung möglicherweise autorisieren, bevor sie normal ausgeführt wird. Bei nicht autorisierten Webanwendungen werden Autorisierungsaufforderungen für den Nutzer angezeigt.
Webanwendungen und Browserverlauf
Wenn Sie eine mehrseitige Anwendung oder eine Anwendung mit einer dynamischen Benutzeroberfläche simulieren möchten, die über URL-Parameter gesteuert wird, definieren Sie ein Statusobjekt, das die Benutzeroberfläche oder Seite der App darstellt, und übertragen Sie den Status in den Browserverlauf, während der Nutzer in Ihrer App navigiert. Achten Sie auf Verlaufsereignisse, damit in Ihrer Webanwendung die richtige Benutzeroberfläche angezeigt wird, wenn der Nutzer mit den Schaltflächen des Browsers vorwärts und rückwärts navigiert. Wenn Sie die URL-Parameter beim Laden abfragen, kann Ihre App die Benutzeroberfläche dynamisch anhand dieser Parameter erstellen, sodass der Nutzer die App in einem bestimmten Zustand starten kann.
Apps Script bietet zwei asynchrone clientseitige JavaScript APIs, mit denen Sie Webanwendungen erstellen können, die mit dem Browserverlauf verknüpft sind:
google.script.historybietet Methoden, mit denen dynamisch auf Änderungen im Browserverlauf reagiert werden kann. Dazu gehören: Status (einfache Objekte, die Sie definieren) in den Browserverlauf übertragen, den obersten Status im Verlaufsstack ersetzen und eine Listener-Callback-Funktion festlegen, um auf Verlaufsänderungen zu reagieren.google.script.urlbietet die Möglichkeit, die URL-Parameter und das URL-Fragment der aktuellen Seite abzurufen, falls vorhanden.
Diese Verlaufs-APIs sind nur für Webanwendungen verfügbar. Sie werden nicht für Seitenleisten, Dialogfelder oder Add-ons unterstützt. Diese Funktion wird auch nicht für Webanwendungen empfohlen, die in Google Sites eingebettet sind.