Fehlerbehebung

Selbst die erfahrensten Entwickler schreiben Code selten beim ersten Versuch richtig. Daher ist die Fehlerbehebung ein wichtiger Teil des Entwicklungsprozesses. In diesem Abschnitt werden einige Techniken beschrieben, mit denen Sie Fehler in Skripts finden, verstehen und beheben können.

Fehlermeldungen

Wenn in Ihrem Script ein Fehler auftritt, wird eine Fehlermeldung angezeigt. Die Meldung enthält eine Zeilennummer, die für die Fehlerbehebung verwendet wird. Es gibt zwei grundlegende Arten von Fehlern, die auf diese Weise angezeigt werden: Syntaxfehler und Laufzeitfehler.

Syntaxfehler

Syntaxfehler entstehen durch Code, der nicht der JavaScript-Grammatik entspricht. Sie werden erkannt, sobald Sie versuchen, das Script zu speichern. Das folgende Code-Snippet enthält beispielsweise einen Syntaxfehler:

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ";
  MailApp.sendEmail('john@example.com',
                    'Data in row ' + rowNumber,
                    rowData);
}

Das Syntaxproblem hier ist ein fehlendes )-Zeichen am Ende der vierten Zeile. Wenn Sie versuchen, das Script zu speichern, wird der folgende Fehler angezeigt:

Nach der Argumentliste fehlt ein ). (Zeile 4)

Diese Fehlertypen lassen sich in der Regel einfach beheben, da sie sofort gefunden werden und in der Regel einfache Ursachen haben. Sie können keine Datei speichern, die Syntaxfehler enthält. Das bedeutet, dass nur gültiger Code in Ihrem Projekt gespeichert wird.

Laufzeitfehler

Diese Fehler werden durch die falsche Verwendung einer Funktion oder Klasse verursacht und können erst nach dem Ausführen des Scripts erkannt werden. Der folgende Code führt beispielsweise zu einem Laufzeitfehler:

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ");
  MailApp.sendEmail('john',
                    'Data in row ' + rowNumber,
                    rowData);
}

Der Code ist richtig formatiert. Beim Aufrufen von MailApp.sendEmail wird jedoch der Wert „john“ als E-Mail-Adresse übergeben. Da dies keine gültige E-Mail-Adresse ist, wird beim Ausführen des Scripts der folgende Fehler ausgegeben:

Ungültige E-Mail-Adresse: max (Zeile 5)

Die Fehlerbehebung ist bei diesen Fehlern schwieriger, da die Daten, die Sie an eine Funktion übergeben, häufig nicht im Code geschrieben, sondern aus einer Tabelle, einem Formular oder einer anderen externen Datenquelle abgerufen werden. Mit den folgenden Techniken zur Fehlerbehebung können Sie die Ursache dieser Fehler ermitteln.

Häufige Fehler

Im Folgenden finden Sie eine Liste mit häufigen Fehlern und ihren Ursachen.

Dienst zu oft aufgerufen: <action name>

Dieser Fehler gibt an, dass Sie Ihr tägliches Kontingent für eine bestimmte Aktion überschritten haben. Dieser Fehler kann beispielsweise auftreten, wenn Sie zu viele E-Mails an einem einzigen Tag senden. Die Kontingente sind für Privatnutzer-, Domain- und Premier-Konten unterschiedlich festgelegt und können jederzeit ohne vorherige Ankündigung von Google geändert werden. Die Kontingente für verschiedene Aktionen finden Sie in der Dokumentation zu Apps Script-Kontingenten.

Der Server ist nicht verfügbar. oder Ein Serverfehler ist aufgetreten. Bitte versuchen Sie es noch einmal.

Für diese Fehler gibt es mehrere mögliche Ursachen:

  • Ein Google-Server oder -System ist vorübergehend nicht verfügbar. Warten Sie einige Minuten und versuchen Sie es dann noch einmal.
  • In Ihrem Script ist ein Fehler enthalten, für den es keine entsprechende Fehlermeldung gibt. Versuchen Sie, Ihr Script zu debuggen, und prüfen Sie, ob Sie das Problem eingrenzen können.
  • Dieser Fehler wird durch einen Programmfehler in Google Apps Script verursacht. Eine Anleitung zum Suchen und Einreichen von Fehlerberichten finden Sie unter Fehlerberichte. Bevor Sie einen neuen Fehler melden, prüfen Sie, ob andere ihn bereits gemeldet haben.

Zum Ausführen dieser Aktion ist eine Autorisierung erforderlich.

Dieser Fehler weist darauf hin, dass dem Script die zum Ausführen erforderliche Autorisierung fehlt. Wenn ein Script im Script-Editor oder über einen benutzerdefinierten Menüpunkt ausgeführt wird, wird dem Nutzer ein Autorisierungsdialogfeld angezeigt. Wenn ein Skript jedoch über einen Trigger, eingebettet in eine Google Sites-Seite oder als Dienst ausgeführt wird, kann das Dialogfeld nicht angezeigt werden und dieser Fehler wird angezeigt.

Öffnen Sie den Skripteditor und führen Sie eine beliebige Funktion aus, um das Skript zu autorisieren. Die Autorisierungsaufforderung wird angezeigt, damit Sie das Skriptprojekt autorisieren können. Wenn das Script neue nicht autorisierte Dienste enthält, müssen Sie es noch einmal autorisieren.

Dieser Fehler wird häufig durch Trigger verursacht, die ausgelöst werden, bevor der Nutzer sie autorisiert hat. Wenn Sie keinen Zugriff auf das Scriptprojekt haben (z. B. weil der Fehler bei einem von Ihnen verwendeten Add-on auftritt), können Sie das Script in der Regel autorisieren, indem Sie das Add-on noch einmal verwenden. Wenn ein Trigger weiterhin ausgelöst wird und diesen Fehler verursacht, können Sie ihn entfernen. Gehen Sie dazu so vor:

  1. Klicken Sie links im Apps Script-Projekt auf Trigger .
  2. Klicken Sie rechts neben dem Trigger, den Sie entfernen möchten, auf das Dreipunkt-Menü  > Trigger löschen.

Sie können problematische Add-on-Trigger auch entfernen, indem Sie das Add-on deinstallieren.

Zugriff verweigert: DriveApp oder Drive-Apps von Drittanbietern wurden aufgrund der Domainrichtlinien deaktiviert

Administratoren von Google Workspace -Domains können die Drive API für ihre Domain deaktivieren. Dadurch können Nutzer keine Google Drive-Apps mehr installieren und verwenden. Außerdem können Nutzer mit dieser Einstellung keine Apps Script-Add-ons verwenden, die den Drive-Dienst oder den erweiterten Drive-Dienst nutzen, auch wenn das Script vor der Deaktivierung der Drive API autorisiert wurde.

Wenn jedoch ein Add-on oder eine Webanwendung, die Google Drive verwendet, für die domainweite Installation veröffentlicht und vom Administrator für einige oder alle Nutzer in der Domain installiert wird, funktioniert das Skript für diese Nutzer auch dann, wenn die Drive API in der Domain deaktiviert ist.

Das Skript ist nicht berechtigt, die Identität des aktiven Nutzers abzurufen.

Gibt an, dass die Identität und E-Mail-Adresse des aktiven Nutzers für das Script nicht verfügbar sind. Diese Warnung ist auf einen Aufruf von Session.getActiveUser() zurückzuführen. Das kann auch durch einen Aufruf von Session.getEffectiveUser() geschehen, wenn das Script in einem anderen Autorisierungsmodus als AuthMode.FULL ausgeführt wird. Wenn diese Warnung ausgegeben wird, geben nachfolgende Aufrufe von User.getEmail() nur „"" zurück.

Je nach Autorisierungsmodus, in dem das Skript ausgeführt wird, gibt es mehrere Möglichkeiten, diese Warnung zu beheben. Der Autorisierungsmodus wird in ausgelösten Funktionen als authMode-Attribut des e-Ereignisparameters übergeben.

  • Verwenden Sie in AuthMode.FULL stattdessen Session.getEffectiveUser().
  • Prüfen Sie in AuthMode.LIMITED, ob der Inhaber das Skript autorisiert hat.
  • Rufen Sie in anderen Autorisierungsmodi keine der beiden Methoden auf.
  • Wenn Sie Google Workspace einen Kunden sind, der diese Warnung von einem installierbaren Trigger zum ersten Mal erhält, prüfen Sie, ob der Trigger als Nutzer in Ihrer Organisation ausgeführt wird.

Bibliothek fehlt

Wenn Sie Ihrem Skript eine beliebte Bibliothek hinzufügen, erhalten Sie möglicherweise eine Fehlermeldung, dass diese Bibliothek fehlt, obwohl die Bibliothek als Abhängigkeit für Ihr Skript aufgeführt ist. Möglicherweise greifen zu viele Nutzer gleichzeitig auf die Bibliothek zu. Versuchen Sie Folgendes, um diesen Fehler zu vermeiden:

  • Kopieren Sie den Code der Bibliothek und fügen Sie ihn in Ihr Script ein. Entfernen Sie dann die Bibliotheksabhängigkeit.
  • Kopieren Sie das Bibliotheksskript und stellen Sie es aus Ihrem Konto als Bibliothek bereit. Aktualisieren Sie die Abhängigkeit in Ihrem ursprünglichen Script auf die neue Bibliothek anstelle der öffentlichen.

Aufgrund einer fehlenden Bibliotheks- oder Bereitstellungsversion ist ein Fehler aufgetreten. Fehlercode „Not_Found“

Diese Fehlermeldung weist auf eines der folgenden Probleme hin:

  • Die bereitgestellte Version des Scripts wurde gelöscht. Informationen zum Aktualisieren der bereitgestellten Version Ihres Scripts finden Sie unter Versionierte Bereitstellung bearbeiten.
  • Die Version einer Bibliothek, die vom Script verwendet wird, wurde gelöscht. Wenn Sie prüfen möchten, welche Bibliothek fehlt, klicken Sie neben dem Namen der Bibliothek auf das Dreipunkt-Menü  Mehr > In neuem Tab öffnen. Für die fehlende Bibliothek wird eine Fehlermeldung ausgegeben. Nachdem Sie die Bibliothek gefunden haben, die Sie aktualisieren möchten, können Sie eine der folgenden Aktionen ausführen:
    • Aktualisieren Sie die Bibliothek, um eine andere Version zu verwenden. Weitere Informationen finden Sie unter Bibliothek aktualisieren.
    • Entfernen Sie die gelöschte Bibliothek aus Ihrem Scriptprojekt und Code. Weitere Informationen finden Sie unter Mediathek entfernen.
  • Das Script einer Bibliothek, die Ihr Script verwendet, enthält eine andere Bibliothek, die eine gelöschte Version verwendet. Führen Sie einen der folgenden Schritte aus:
    • Wenn Sie Bearbeitungszugriff auf die Bibliothek haben, die in Ihrem Script verwendet wird, aktualisieren Sie die sekundäre Bibliothek in diesem Script auf eine vorhandene Version.
    • Aktualisieren Sie die Bibliothek, um eine andere Version zu verwenden. Weitere Informationen finden Sie unter Bibliothek aktualisieren.
    • Entfernen Sie die Bibliothek aus Ihrem Skriptprojekt und ‐code. Weitere Informationen finden Sie unter Mediathek entfernen.

Fehler 400: invalid_scope beim Aufrufen der Google Chat API mit dem erweiterten Dienst

Wenn Error 400: invalid_scope mit der Fehlermeldung Some requested scopes cannot be shown angezeigt wird, haben Sie keine Autorisierungsbereiche in der Datei appsscript.json des Apps Script-Projekts angegeben. In den meisten Fällen ermittelt Apps Script automatisch, welche Bereiche ein Skript benötigt. Wenn Sie jedoch den erweiterten Chat-Dienst verwenden, müssen Sie die von Ihrem Skript verwendeten Autorisierungsbereiche manuell zur Manifestdatei Ihres Apps Script-Projekts hinzufügen. Siehe Explizite Bereiche festlegen.

Fügen Sie der Datei appsscript.json des Apps Script-Projekts die entsprechenden Autorisierungsbereiche als Teil des oauthScopes-Arrays hinzu, um den Fehler zu beheben. Wenn Sie beispielsweise die Methode spaces.messages.create aufrufen möchten, fügen Sie Folgendes hinzu:

"oauthScopes": [
  "https://www.googleapis.com/auth/chat.messages.create"
]

URL-Abrufe an <URL> sind von Ihrem Administrator nicht erlaubt.

Google Workspace-Administratoren können in der Admin-Konsole eine Zulassungsliste aktivieren, um festzulegen, auf welche externen Domains Sie über Apps Script zugreifen können.

Um den Fehler zu beheben, bitten Sie Ihren Administrator, die URL auf die Zulassungsliste zu setzen.

Debugging

Nicht alle Fehler führen zu einer Fehlermeldung. Es kann ein subtilerer Fehler vorliegen, bei dem der Code technisch korrekt ist und ausgeführt werden kann, aber die Ergebnisse entsprechen nicht Ihren Erwartungen. Im Folgenden finden Sie einige Strategien, wie Sie mit solchen Situationen umgehen und ein Script untersuchen können, das nicht wie erwartet ausgeführt wird.

Logging

Bei der Fehlerbehebung ist es oft hilfreich, Informationen bei der Ausführung eines Skriptprojekts aufzuzeichnen. In Google Apps Script gibt es zwei Methoden zum Logging von Informationen: den Cloud Logging-Dienst und die einfacheren Logger- und Konsolendienste, die im Apps Script-Editor integriert sind.

Weitere Informationen finden Sie in der Anleitung zum Logging.

Error Reporting

Ausnahmen, die aufgrund von Laufzeitfehlern auftreten, werden automatisch über den Google Cloud-Fehlerberichtsdienst protokolliert. Mit diesem Dienst können Sie nach Ausnahmemeldungen suchen und diese filtern, die von Ihrem Scriptprojekt erstellt werden.

Informationen zum Zugriff auf Error Reporting finden Sie unter Cloud-Logs und Fehlerberichte in der Google Cloud Platform Console ansehen.

Ausführungen

Jedes Mal, wenn Sie ein Script ausführen, wird die Ausführung in Apps Script protokolliert, einschließlich der Cloud-Logs. Anhand dieser Einträge können Sie nachvollziehen, welche Aktionen Ihr Script ausgeführt hat.

Wenn Sie die Ausführungen Ihres Scripts im Apps Script-Projekt aufrufen möchten, klicken Sie links auf Ausführungen .

Apps Script-Dienststatus prüfen

Gelegentlich treten bei bestimmten Google Workspace-Diensten (z. B. Gmail oder Drive) vorübergehende Probleme auf, die zu Dienstausfällen führen können. In diesem Fall funktionieren Apps Script-Projekte, die mit diesen Diensten interagieren, möglicherweise nicht wie erwartet.

Im Google Workspace-Status-Dashboard können Sie prüfen, ob es eine Google Workspace-Dienstunterbrechung gibt. Wenn derzeit eine Störung auftritt, können Sie entweder warten, bis sie behoben ist, oder sich in der Google Workspace-Hilfe oder in der Dokumentation zu bekannten Problemen in Google Workspace weitere Informationen einholen.

Debugger und Haltestellen verwenden

Wenn Sie Probleme in Ihrem Script finden möchten, können Sie es im Debug-Modus ausführen. Wenn ein Script im Debug-Modus ausgeführt wird, wird es an einem Haltepunkt pausiert. Ein Haltepunkt ist eine Zeile in Ihrem Script, die Sie markiert haben, weil Sie vermuten, dass dort ein Problem vorliegt. Wenn ein Skript pausiert wird, wird der Wert jeder Variablen zu diesem Zeitpunkt angezeigt. So können Sie die Funktionsweise eines Skripts untersuchen, ohne viele Logging-Anweisungen hinzufügen zu müssen.

Haltepunkt hinzufügen

Wenn Sie einen Haltepunkt hinzufügen möchten, bewegen Sie den Mauszeiger auf die Zeilennummer der Zeile, der Sie den Haltepunkt hinzufügen möchten. Klicken Sie links neben der Zeilennummer auf den Kreis. Die folgende Abbildung zeigt ein Beispiel für einen Haltepunkt, der einem Skript hinzugefügt wurde:

Haltepunkt hinzufügen

Skript im Debug-Modus ausführen

Wenn Sie das Script im Debug-Modus ausführen möchten, klicken Sie oben im Editor auf Debug.

Bevor das Skript die Zeile mit dem Haltepunkt ausführt, pausiert es und zeigt eine Tabelle mit Informationen zur Fehlerbehebung an. In dieser Tabelle können Sie Daten wie die Werte von Parametern und die in Objekten gespeicherten Informationen prüfen.

Mit den Schaltflächen „Step in“, „Step over“ und „Step out“ oben im Debugger-Steuerfeld können Sie steuern, wie das Script ausgeführt wird. Damit können Sie das Skript Zeile für Zeile ausführen und prüfen, wie sich die Werte im Laufe der Zeit ändern.

Probleme mit mehreren Google-Konten

Wenn Sie in mehreren Google-Konten gleichzeitig angemeldet sind, haben Sie möglicherweise Probleme beim Zugriff auf Ihre Add-ons und Webanwendungen. Die Mehrfachanmeldung oder die gleichzeitige Anmeldung in mehreren Google-Konten wird für Apps Script, Add-ons und Webanwendungen nicht unterstützt.

  • Wenn Sie den Apps Script-Editor öffnen, während Sie in mehreren Konten angemeldet sind, werden Sie von Google aufgefordert, das Konto auszuwählen, mit dem Sie fortfahren möchten.

  • Wenn Sie eine Webanwendung oder ein Add-on öffnen und Probleme mit mehreren Anmeldungen auftreten, versuchen Sie es mit einer der folgenden Lösungen:

    • Melden Sie sich von allen Google-Konten ab und melden Sie sich nur in dem Konto an, das das Add-on oder die Web-App enthält, auf die Sie zugreifen möchten.
    • Öffnen Sie in Google Chrome oder ein entsprechendes privates Browserfenster ein Inkognitofenster und melden Sie sich in dem Google-Konto an, in dem sich das Add-on oder die Webanwendung befindet, auf die Sie zugreifen möchten.

Hilfe erhalten

Mit den oben aufgeführten Tools und Techniken lassen sich viele Probleme beheben. Es kann jedoch vorkommen, dass Sie auf Probleme stoßen, die etwas mehr Hilfe erfordern. Auf unserer Supportseite finden Sie Informationen dazu, wo Sie Fragen stellen und Fehler melden können.