Für den Zugriff auf private Daten aus integrierten Google-Diensten oder erweiterten Google-Diensten ist in Apps Script eine Nutzerautorisierung erforderlich.
Funktionsweise der Autorisierung für Google-Dienste
Wenn ein Skript Zugriff auf Google-Dienste benötigt, wird dieser allgemeine Prozess durchlaufen:
- Erkennung: Apps Script scannt das Script, um zu ermitteln, welche Dienste es verwendet, z. B.
SpreadsheetAppoderGmailApp. - Bereichsbestimmung: Basierend auf dem Scan ermittelt Apps Script eine Reihe von OAuth-Bereichen, die für die Ausführung des Skripts erforderlich sind.
- Autorisierungsprüfung: Wenn das Script 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 Arten von Skripts
Die Nutzeridentität, mit der ein Script ausgeführt wird, und damit die Daten, auf die es zugreifen kann, variieren je nach Szenario, in dem das Script ausgeführt wird. Das geht aus der folgenden Tabelle hervor.
| Skriptart | Script wird ausgeführt als… |
|---|---|
| Eigenständig, 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; Kontingentlimits werden jedoch auf den Nutzer am Computer angerechnet. |
| Web-App oder Google Sites-Gadget | Nutzer an der Tastatur oder Skriptinhaber, je nach 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. Auch auskommentierter Code kann eine Autorisierungsanfrage generieren. Wenn für ein Skript eine Autorisierung erforderlich ist, wird beim Ausführen eines der hier gezeigten Autorisierungsdialogfelder angezeigt.
Für Skripts, die Sie zuvor autorisiert haben, ist ebenfalls eine zusätzliche Autorisierung erforderlich, wenn durch eine Codeänderung neue Dienste hinzugefügt werden. Für Scripts, auf die als Webanwendung zugegriffen wird, die unter der Nutzeridentität des Scriptinhabers ausgeführt wird, darf keine Autorisierung angefordert werden.
Zugriffsrechte widerrufen
So widerrufen Sie den Zugriff eines Skripts auf Ihre Daten:
- Rufen Sie die Berechtigungsseite für Ihr Google-Konto auf. Wenn Sie diese Seite in Zukunft aufrufen möchten, rufen Sie Google.com auf und klicken Sie dann rechts oben auf dem Bildschirm auf Ihr Kontobild. Klicken Sie dann auf Mein Konto, im Bereich „Anmelden & Sicherheit“ auf Verknüpfte Apps und Websites und dann auf Apps verwalten.)
- Klicken Sie auf den Namen des Skripts, dessen Autorisierung Sie aufheben möchten, dann rechts auf Entfernen und im angezeigten Dialogfeld auf OK.
Bereich auf das aktuelle Dokument beschränken
Wenn Sie ein Add-on oder ein anderes Script erstellen, das den Tabellendienst, den Dokumentdienst, den Präsentationen-Dienst oder den Formulare-Dienst verwendet, können Sie erzwingen, dass im Autorisierungsdialog nur der Zugriff auf Dateien angefordert wird, in denen das Add-on oder Script 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
*/
Die gegenteilige Anmerkung @NotOnlyCurrentDoc ist verfügbar, wenn Ihr Skript eine Bibliothek enthält, in der @OnlyCurrentDoc deklariert wird, das Hauptskript jedoch Zugriff auf mehr als die aktuelle Datei benötigt.
Autorisierungslebenszyklus für Add-ons
Add-ons für Google Sheets, Docs, Präsentationen und Formulare folgen im Allgemeinen demselben Autorisierungsmodell wie Skripts, die an ein Dokument gebunden sind. Unter bestimmten Umständen werden ihre onOpen(e)- und onEdit(e)-Funktionen jedoch in einem Modus ohne 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 für den Zugriff auf Google-Nutzerdaten verwenden, einschließlich Apps Script-Projekten, gelten Autorisierungslimits. Weitere Informationen finden Sie unter OAuth-Anwendungsnutzerlimits.
Verhalten bei erneuter Authentifizierung mit Apps Script
Apps Script erzwingt nicht die Häufigkeit der erneuten Authentifizierung, die Sie in den Einstellungen für Google Cloud-Dienste konfigurieren. Das liegt daran, dass Apps Script automatisch über Trigger ausgeführt werden kann, die ohne direkte Nutzerinteraktion funktionieren. Bei diesen automatisierten Ausführungen werden keine Aufforderungen zur erneuten Authentifizierung ausgelöst. Ihre Apps Script-Anwendung fordert Sie nach dem von Ihnen angegebenen Zeitraum (z. B. 12 Stunden) nicht automatisch auf, sich noch einmal zu authentifizieren.
Explizite Bereiche im Manifest festlegen
Apps Script ermittelt die erforderlichen Bereiche automatisch, indem der Code nach Funktionsaufrufen durchsucht wird. Wenn Sie mehr Kontrolle benötigen, können Sie die Bereiche im Projektmanifest (appsscript.json) explizit festlegen. Dies wird für veröffentlichte Skripts empfohlen, um sicherzustellen, dass Sie die minimal erforderlichen Berechtigungen verwenden.
Eine Anleitung finden Sie unter Explizite Bereiche festlegen.
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 Skripteditor ausführen, um das Autorisierungsdialogfeld aufzurufen.
- Bereiche werden nicht aktualisiert: Wenn Sie Ihren Code aktualisiert haben, die Änderungen aber nicht im Autorisierungsdialogfeld 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
oauthScopes-Array hinzufügen. - „Diese App ist blockiert“ oder Warnung zu nicht bestätigter App: Dies tritt auf, wenn in Ihrem Skript vertrauliche oder eingeschränkte Bereiche verwendet werden und es nicht von Google bestätigt wurde. Weitere Informationen finden Sie unter OAuth-Clientüberprüfung.