Fehlerbehebung

Selbst die erfahrensten Entwickler schreiben selten Code, der auf Anhieb funktioniert. Daher ist die Fehlerbehebung ein wichtiger Bestandteil des Entwicklungsprozesses. In diesem Abschnitt werden einige Techniken behandelt, mit denen Sie Fehler in Ihren Skripts finden, nachvollziehen und beheben können.

Fehlermeldungen

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

Syntaxfehler

Syntaxfehler entstehen, wenn Sie Code schreiben, der nicht der JavaScript-Grammatik entspricht. Die Fehler 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 ist hier das fehlende )-Zeichen am Ende der vierten Zeile. Wenn Sie versuchen, das Skript zu speichern, wird der folgende Fehler angezeigt:

Fehlende schließende Klammer nach der Argumentliste. (Zeile 4)

Diese Arten von Fehlern 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 erkannt werden, wenn das Skript ausgeführt wurde. 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 korrekt formatiert, aber wir übergeben den Wert „john“ für die E-Mail-Adresse, wenn wir MailApp.sendEmail aufrufen. Da dies keine gültige E-Mail-Adresse ist, wird beim Ausführen des Skripts der folgende Fehler ausgegeben:

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

Die Fehlersuche wird dadurch erschwert, dass die Daten, die Sie an eine Funktion übergeben, oft nicht im Code enthalten sind, sondern aus einer Tabelle, einem Formular oder einer anderen externen Datenquelle stammen. Mit den folgenden Debugging-Techniken 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 häufig aufgerufen: <action name>

Dieser Fehler gibt an, dass Sie Ihr Tageskontingent für eine bestimmte Aktion überschritten haben. Dieser Fehler kann beispielsweise auftreten, wenn Sie an einem Tag zu viele E‑Mails senden. Die Kontingente werden für Privatnutzerkonten, Domainkonten und Premium-Konten auf unterschiedlichen Ebenen festgelegt und können sich jederzeit ohne vorherige Ankündigung durch Google ändern. Die Kontingente für verschiedene Aktionen finden Sie in der Apps Script-Dokumentation zu Kontingenten.

Server 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 dann noch einmal, das Skript auszuführen.
  • Ihr Skript enthält einen Fehler, für den keine entsprechende Fehlermeldung vorhanden ist. Versuchen Sie, das Skript zu debuggen, um das Problem zu isolieren.
  • Dieser Fehler wird durch einen Fehler in Google Apps Script verursacht. Eine Anleitung zum Suchen nach und Einreichen von Fehlerberichten finden Sie unter Bugs. Bevor Sie einen neuen Fehler melden, sehen Sie bitte nach, ob er schon gemeldet wurde.

Für das Ausführen dieser Aktion ist eine Autorisierung erforderlich.

Dieser Fehler weist darauf hin, dass dem Script die für die Ausführung erforderliche Autorisierung fehlt. Wenn ein Script im Script-Editor oder über ein benutzerdefiniertes Menüelement 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 ausgegeben.

Wenn Sie das Skript autorisieren möchten, öffnen Sie den Skripteditor und führen Sie eine beliebige Funktion aus. Die Autorisierungsaufforderung wird angezeigt, damit Sie das Skriptprojekt autorisieren können. Wenn das Skript neue nicht autorisierte Dienste enthält, müssen Sie das Skript neu 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 (weil der Fehler beispielsweise bei einem Add-on auftritt, das Sie verwenden), 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 dieser Fehler auftritt, können Sie Ihre Trigger so entfernen:

  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 durch die Domainrichtlinie deaktiviert

Administratoren von Google Workspace Domains können die Drive API für ihre Domain deaktivieren. Dadurch wird verhindert, dass ihre Nutzer Google Drive-Apps installieren und verwenden. Diese Einstellung verhindert auch, dass Nutzer Apps Script-Add-ons verwenden können, die den Drive-Dienst oder den erweiterten Drive-Dienst verwenden, auch wenn das Skript vor der Deaktivierung der Drive API durch den Administrator autorisiert wurde.

Wenn ein Add-on oder eine Web-App, die den Drive-Dienst verwendet, für die domainweite Installation veröffentlicht und vom Administrator für einige oder alle Nutzer in der Domain installiert wird, funktionieren die Scriptfunktionen für diese Nutzer jedoch auch dann, wenn die Drive API in der Domain deaktiviert ist.

Das Script hat keine Berechtigung, die Identität des aktiven Nutzers abzurufen.

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

Es gibt verschiedene Möglichkeiten, diese Warnung zu beheben, je nachdem, in welchem Autorisierungsmodus das Skript ausgeführt wird. Der Autorisierungsmodus wird in ausgelösten Funktionen als Attribut authMode des e-Ereignisparameters verfügbar gemacht.

  • In AuthMode.FULL sollten Sie stattdessen Session.getEffectiveUser() verwenden.
  • Prüfen Sie in AuthMode.LIMITED, ob der Eigentümer das Skript autorisiert hat.
  • In anderen Autorisierungsmodi sollten Sie keine der beiden Methoden aufrufen.
  • Wenn Sie ein Google Workspace -Kunde sind, der diese Warnung zum ersten Mal bei einem installierbaren Trigger 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 sie fehlt, obwohl die Bibliothek als Abhängigkeit für Ihr Skript aufgeführt ist. Der Grund dafür könnte sein, dass zu viele Personen gleichzeitig auf die Mediathek zugreifen. Versuchen Sie Folgendes, um diesen Fehler zu vermeiden:

  • Kopieren Sie den Code der Bibliothek und fügen Sie ihn in Ihr Skript ein. Entfernen Sie dann die Bibliotheksabhängigkeit.
  • Kopieren Sie das Bibliotheksskript und stellen Sie es als Bibliothek über Ihr Konto bereit. Aktualisieren Sie die Abhängigkeit in Ihrem ursprünglichen Skript 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 Skripts wurde gelöscht. Informationen zum Aktualisieren der bereitgestellten Version Ihres Scripts finden Sie unter Bereitstellung mit Versionsverwaltung bearbeiten.
  • Die Version einer Bibliothek, die vom Skript verwendet wird, wurde gelöscht. Wenn Sie herausfinden möchten, welche Bibliothek fehlt, klicken Sie neben dem Bibliotheksnamen auf das Dreipunkt-Menü  Mehr > In neuem Tab öffnen. Die fehlende Bibliothek gibt eine Fehlermeldung aus. Wenn Sie die Bibliothek gefunden haben, die Sie aktualisieren müssen, führen Sie einen der folgenden Schritte aus:
  • Das Skript einer Bibliothek, die von Ihrem Skript verwendet wird, 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 von Ihrem Skript verwendet wird, aktualisieren Sie die sekundäre Bibliothek in diesem Skript auf eine vorhandene Version.
    • Aktualisieren Sie die Bibliothek, um eine andere Version zu verwenden. Weitere Informationen
    • Entfernen Sie die Bibliothek aus Ihrem Skriptprojekt und ‑code. Weitere Informationen

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

Wenn Sie auf Error 400: invalid_scope mit der Fehlermeldung Some requested scopes cannot be shown stoßen, haben Sie im Apps Script-Projekt in der Datei appsscript.json keine Autorisierungsbereiche 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 Autorisierungsbereiche, die Ihr Skript verwendet, manuell der Manifestdatei Ihres Apps Script-Projekts hinzufügen. Weitere Informationen finden Sie unter Explizite Bereiche festlegen.

Fügen Sie die entsprechenden Autorisierungsbereiche in die Datei appsscript.json des Apps Script-Projekts als Teil des Arrays oauthScopes ein, 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> wurden vom Administrator nicht erlaubt

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

Wenden Sie sich an Ihren Administrator, um den Fehler zu beheben. Er kann die URL auf die Zulassungsliste setzen.

Debugging

Nicht alle Fehler führen dazu, dass eine Fehlermeldung angezeigt wird. Möglicherweise liegt ein subtilerer Fehler vor, bei dem der Code technisch korrekt ist und ausgeführt werden kann, die Ergebnisse aber nicht Ihren Erwartungen entsprechen. Hier sind einige Strategien für den Umgang mit solchen Situationen und die weitere Untersuchung eines Skripts, das nicht wie erwartet ausgeführt wird.

Logging

Bei der Fehlersuche ist es oft hilfreich, Informationen während der Ausführung eines Scriptprojekts aufzuzeichnen. Google Apps Script bietet zwei Methoden zum Protokollieren von Informationen: den Cloud Logging-Dienst und die einfacheren Logger- und Konsolendienste, die in den Apps Script-Editor integriert sind.

Weitere Informationen finden Sie in der Logging-Anleitung.

Error Reporting

Ausnahmen, die aufgrund von Laufzeitfehlern auftreten, werden automatisch mit dem Google Cloud Error Reporting-Dienst aufgezeichnet. Mit diesem Dienst können Sie nach Fehlermeldungen suchen und diese filtern, die von Ihrem Skriptprojekt erstellt werden.

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

Ausführungen

Jedes Mal, wenn Sie ein Skript ausführen, wird in Apps Script ein Datensatz der Ausführung erstellt, einschließlich der Cloud-Logs. Anhand dieser Datensätze können Sie nachvollziehen, welche Aktionen von Ihrem Skript ausgeführt wurden.

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

Apps Script-Dienststatus prüfen

Obwohl selten, kann es vorkommen, dass bei bestimmten Google Workspace-Diensten (z. B. Gmail oder Drive) vorübergehende Probleme auftreten, 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 nachsehen, ob es eine Dienstunterbrechung bei Google Workspace gibt. Wenn es derzeit zu einem Ausfall kommt, warten Sie entweder, bis das Problem behoben ist, oder suchen Sie in der Google Workspace-Hilfe oder in der Dokumentation Bekannte Probleme in Google Workspace nach weiteren Informationen.

Debugger und Breakpoints verwenden

Wenn Sie Probleme in Ihrem Skript finden möchten, können Sie es im Debug-Modus ausführen. Wenn ein Skript im Debugmodus ausgeführt wird, wird es angehalten, sobald es einen Haltepunkt erreicht. Ein Haltepunkt ist eine Zeile, die Sie in Ihrem Skript 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 Protokollanweisungen 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. Das Bild unten zeigt ein Beispiel für einen Haltepunkt, der einem Script hinzugefügt wurde:

Haltepunkt hinzufügen

Skript im Debugging-Modus ausführen

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

Bevor das Skript die Zeile mit dem Haltepunkt ausführt, wird es angehalten und eine Tabelle mit Debugging-Informationen angezeigt. Mithilfe 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-Bereich können Sie steuern, wie das Script ausgeführt wird. So können Sie das Skript zeilenweise ausführen und beobachten, wie sich die Werte im Laufe der Zeit ändern.

Fehler: Der Quellcode für die aktuelle Zeile ist nicht verfügbar

Der Quellcode für die aktuelle Zeile ist nicht verfügbar

Dieser Fehler tritt auf, wenn keine aktive Debugging-Datei verfügbar ist. Google Apps Script unterstützt die Anzeige von dynamisch generierten JavaScript-Skripts (JS) im Skripteditor nicht, z. B. Skripts, die mit eval() und new Function() generiert werden. Diese Skripts werden in der V8-Engine erstellt und ausgeführt, sind aber nicht als eigenständige Dateien im Editor vorhanden. Wenn Sie diese Skripts durchlaufen, tritt dieser Fehler auf.

Sehen Sie sich beispielsweise den folgenden Code an:

function myFunction() {
  eval('a=2');
}

Wenn eval() aufgerufen wird, wird das Argument als JS-Code behandelt und als dynamisch erstelltes Skript in der V8-Engine ausgeführt. Wenn Sie eval() durchlaufen, wird dieser Fehler angezeigt. Wenn das Skript einen //# sourceURL-Kommentar enthält, wird sein Name im Aufrufstapel angezeigt. Andernfalls wird er als unbenannter Eintrag angezeigt.

Trotz der Fehlermeldung bleibt die Debugging-Sitzung aktiv und die Ausführung kann fortgesetzt werden. Fahren Sie mit dem Schritt „Einsteigen“, „Aussteigen“ oder „Fortsetzen“ fort. Dieser Fehler wird jedoch weiterhin angezeigt, solange die Ausführung im Bereich des dynamischen Skripts bleibt. Nachdem die Ausführung aus dem dynamischen Skript heraus verlagert wurde, wird das Debugging ohne diesen Fehler fortgesetzt.

Probleme mit mehreren Google-Konten

Wenn Sie gleichzeitig in mehreren Google-Konten angemeldet sind, haben Sie möglicherweise Probleme, auf Ihre Add-ons und Web-Apps zuzugreifen. Die Mehrfachanmeldung oder das gleichzeitige Angemeldetsein in mehreren Google-Konten wird für Apps Script, Add-ons und Web-Apps 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 Web-App oder ein Add-on öffnen und Probleme mit der Mehrfachanmeldung auftreten, versuchen Sie eine 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 ein Inkognitofenster in Google Chrome oder ein entsprechendes Fenster zum privaten Surfen und melden Sie sich in dem Google-Konto an, in dem sich das Add-on oder die Web-App befindet.

Hilfe erhalten

Mit den oben aufgeführten Tools und Techniken lassen sich viele Probleme beheben. Es kann jedoch auch Probleme geben, bei denen Sie zusätzliche Hilfe benötigen. Informationen dazu, wo Sie Fragen stellen und Fehler melden können, finden Sie auf unserer Supportseite.