Für Google Apps Script ist eine Nutzerautorisierung erforderlich, um auf private Daten aus integrierten Google-Diensten oder erweiterten Google-Diensten zuzugreifen.
So funktioniert die Autorisierung für Google-Dienste
Wenn ein Skript Zugriff auf Google-Dienste benötigt, wird im Allgemeinen so vorgegangen:
- Erkennung: Apps Script scannt das Skript, um zu ermitteln, welche
Dienste es verwendet (z. B.
SpreadsheetAppoderGmailApp). - Bereichsbestimmung: Auf Grundlage des Scans ermittelt Apps Script eine Reihe von OAuth-Bereichen, die für die Ausführung des Skripts erforderlich sind.
- Autorisierungsprüfung: Wenn das Skript ausgeführt wird, wird geprüft, ob der Nutzer diese Bereiche bereits autorisiert hat.
- Nutzeraufforderung: Wenn die Autorisierung fehlt, wird ein Dialogfeld angezeigt, in dem der Nutzer aufgefordert wird, die Berechtigung zu erteilen.
- Ausführung: Nachdem das Skript autorisiert wurde, kann es auf die angeforderten Daten für diesen Nutzer zugreifen.
Berechtigungen und Skripttypen
Die Nutzeridentität, mit der ein Skript ausgeführt wird, und damit die Daten, auf die es zugreifen kann, variieren je nach Szenario, in dem das Skript ausgeführt wird, wie in der folgenden Tabelle dargestellt.
| Skripttyp | Skript wird ausgeführt als... |
|---|---|
| Eigenständig, Google Workspace-Add-on oder an Google Docs, Google Sheets, Google Präsentationen oder Google Formulare gebunden | Nutzer an der Tastatur |
| Benutzerdefinierte Funktion in einer Tabelle | Anonymer Nutzer; die Kontingentlimits werden jedoch auf den Nutzer an der Tastatur angerechnet |
| Web-App oder Google Sites-Gadget | Nutzer an der Tastatur oder Skriptinhaber, je nach den ausgewählten Optionen beim Bereitstellen der App |
| Installierbarer Trigger | Nutzer, der den Trigger erstellt hat |
Zugriffsrechte erteilen
Apps Script ermittelt die Autorisierungsbereiche (z. B. Zugriff auf Ihre Google Sheets-Dateien oder Gmail) automatisch anhand eines Scans des Codes. Auskommentierter Code kann trotzdem eine Autorisierungsanfrage generieren. Wenn für ein Skript eine Autorisierung erforderlich ist, wird bei der Ausführung ein Autorisierungsdialogfeld angezeigt.
Für Skripts, die Sie zuvor autorisiert haben, wird auch eine zusätzliche Autorisierung angefordert, wenn durch eine Codeänderung neue Dienste hinzugefügt werden. Für Skripts wird möglicherweise keine Autorisierung angefordert, wenn Sie als Web-App darauf zugreifen, die mit der Nutzeridentität des Skriptinhabers ausgeführt wird.
Zugriffsrechte widerrufen
So widerrufen Sie den Zugriff eines Skripts auf Ihre Daten:
- Rufen Sie den Bereich „Sicherheit“ Ihres Google Kontos auf.
- Klicken Sie unter Ihre Verbindungen zu Drittanbieter-Apps und ‐Diensten auf Alle Verbindungen ansehen.
- Wählen Sie das Skript oder die App aus, für die Sie den Zugriff widerrufen möchten.
- Klicken Sie auf Alle Verbindungen zu APP_NAME löschen und dann auf Bestätigen.
Bereich auf das aktuelle Dokument beschränken
Wenn Sie ein Add-on oder ein anderes Skript erstellen, das den Tabellendienst, Dokumentdienst, Präsentationsdienst oder den Formulardienst verwendet, können Sie erzwingen, dass im Autorisierungs dialogfeld nur der Zugriff auf Dateien angefordert wird, in denen das Add-on oder Skript verwendet wird, und nicht auf alle Tabellen, Dokumente oder Formulare eines Nutzers. Fügen Sie dazu die folgende JSDoc Annotation in einen Kommentar auf Dateiebene ein:
/**
* @OnlyCurrentDoc
*/
Eine gegenteilige Annotation, @NotOnlyCurrentDoc, ist verfügbar, wenn Ihr Skript eine Bibliothek enthält, die @OnlyCurrentDoc deklariert, das Hauptskript jedoch Zugriff auf mehr als die aktuelle Datei benötigt.
Autorisierungslebenszyklus für Add-ons
Add-ons für Google Sheets,
Google Docs, Google Präsentationen und Google Formulare
folgen im Allgemeinen demselben Autorisierungsmodell wie Skripts, die an ein Dokument
gebunden sind. Unter bestimmten Umständen werden die Funktionen onOpen(e) und onEdit(e) jedoch im Modus „Keine Autorisierung“ ausgeführt, was einige zusätzliche Komplikationen mit sich bringt. Weitere Informationen finden Sie im
Leitfaden zum Autorisierungslebenszyklus von Add-ons.
Nutzerlimits für OAuth-Anwendungen
Für Anwendungen, die OAuth verwenden, um auf Google-Nutzerdaten zuzugreifen, einschließlich Apps Script-Projekten, gelten Autorisierungslimits. Weitere Informationen finden Sie unter OAuth-Anwendungsbenutzerlimits.
Verhalten bei der erneuten Authentifizierung mit Apps Script
Apps Script erzwingt nicht die Häufigkeit der erneuten Authentifizierung, die in den Google Cloud-Diensteinstellungen konfiguriert ist. Das liegt daran, dass Apps Script automatisch mithilfe von Triggern ausgeführt werden kann, die ohne direkte Nutzerinteraktion funktionieren. Diese automatisierten Ausführungen lösen keine Aufforderungen zur erneuten Authentifizierung aus. Ihre Apps Script-Anwendung fordert Sie nicht automatisch auf, sich nach dem angegebenen Zeitraum (z. B. 12 Stunden) neu zu authentifizieren.
Explizite Bereiche im Manifest festlegen
Apps Script ermittelt die erforderlichen Bereiche automatisch, indem der Code nach Funktionsaufrufen gescannt wird. Wenn Sie mehr Kontrolle benötigen, können Sie die Bereiche explizit im Projektmanifest (appsscript.json) festlegen. Dies wird für veröffentlichte Skripts empfohlen, um sicherzustellen, dass Sie die mindestens erforderlichen Berechtigungen verwenden.
Weitere Informationen finden Sie unter Set explicit scopes.
Fehlerbehebung
- Fehler „Autorisierung erforderlich“ beim Ausführen eines Triggers: Trigger müssen von dem Nutzer autorisiert werden, der sie erstellt hat. Wenn Sie Code hinzufügen, für den neue Berechtigungen erforderlich sind, müssen Sie einmal manuell eine Funktion im Script-Editor ausführen, um das Autorisierungsdialogfeld auszulösen.
- Bereiche werden nicht aktualisiert: Wenn Sie Ihren Code aktualisiert haben, die Änderungen aber nicht im Autorisierungs
dialogfeld angezeigt werden, speichern Sie das Projekt und aktualisieren
Sie den Editor. Wenn Sie explizite Bereiche im Manifest verwenden, müssen Sie den neuen Bereich dem Array
oauthScopeshinzugefügt haben. - Warnung „Diese App ist blockiert“ oder Warnung zu nicht überprüfter App: Dies tritt auf, wenn Ihr Skript vertrauliche oder eingeschränkte Bereiche verwendet und nicht von Google überprüft wurde. Weitere Informationen zu OAuth-Client-Verifizierung.