Web-Apps

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:

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 null wenn kein Abfragestring angegeben ist

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 e.parameter, aber mit einem Array von Werten für jeden Schlüssel

{"name": ["alice"], "n": ["1", "2"]}
e.pathInfo

Der URL-Pfad nach /exec oder /dev. Wenn der URL-Pfad beispielsweise mit /exec/hello endet, ist die Pfadinformation hello.

e.contextPath Wird nicht verwendet, immer der leere String.
e.contentLength

Die Länge des Anfragetextes für POST-Anfragen oder -1 für GET-Anfragen

332
e.postData.length

Identisch mit e.contentLength

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:

  • c
  • sid

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:

  1. Klicken Sie rechts oben im Skriptprojekt auf Bereitstellen > Neue Bereitstellung.
  2. Klicken Sie neben "Typ auswählen" auf Einstellungen für Bereitstellungstypen aktivieren > Webanwendung.
  3. Geben Sie die Informationen zu Ihrer Webanwendung in die Felder unter „Bereitstellung skonfiguration“ ein.
  4. 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:

  1. Klicken Sie rechts oben im Skriptprojekt auf Bereitstellen > Bereitstellungen testen.
  2. Klicken Sie neben „Typ auswählen“ auf „Einstellungen für Bereitstellungstypen aktivieren“ > Webanwendung.
  3. Klicken Sie unter der URL der Webanwendung auf Kopieren.
  4. Fügen Sie die URL in Ihren Browser ein und testen Sie Ihre Webanwendung.

    Diese URL endet mit /dev und 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:

  1. Öffnen Sie die Sites-Seite, auf der Sie die Webanwendung hinzufügen möchten.
  2. Wählen Sie Einfügen > URL einbetten aus.
  3. 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.history bietet 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.url bietet 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.