Fehlerbehebung

Selbst der erfahrenste Entwickler schreibt selten Code, der beim ersten Versuch korrekt ist. Daher ist die Fehlerbehebung ein wichtiger Bestandteil des Entwicklungsprozesses. In diesem Abschnitt werden Techniken beschrieben, mit denen Sie Fehler in Ihren Skripts finden, verstehen und beheben können.

Fehlermeldungen

Wenn in Ihrem Skript ein Fehler auftritt, wird eine Fehlermeldung mit einer Zeilennummer angezeigt. Es gibt zwei grundlegende Arten von Fehlern: Syntaxfehler und Laufzeitfehler.

Syntaxfehler

Syntaxfehler treten auf, wenn der Code nicht der JavaScript-Grammatik entspricht. Sie werden beim Speichern des Skripts erkannt. Das folgende 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 Problem ist das fehlende Zeichen ) am Ende von Zeile 4. Wenn Sie das Skript speichern, wird der folgende Fehler angezeigt:

Fehlendes „)“ nach der Argumentliste. (Zeile 4)

Diese Fehler werden sofort gefunden und lassen sich daher einfach beheben. In Ihrem Projekt wird nur gültiger Code gespeichert.

Laufzeitfehler

Laufzeitfehler treten auf, wenn eine Funktion oder Klasse falsch verwendet wird. Sie werden erkannt, wenn das Skript ausgeführt wird. Der folgende Code verursacht beispielsweise einen 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 zwar korrekt formatiert, aber „john“ ist keine gültige E-Mail-Adresse. Der folgende Fehler wird ausgelöst:

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

Diese Fehler sind schwierig zu beheben, da Daten häufig aus externen Quellen wie Tabellen oder Formularen abgerufen werden. Verwenden Sie Debugging-Techniken, um die Ursache zu ermitteln.

Häufige Fehler

Im Folgenden finden Sie eine Liste häufiger Fehler und ihrer Ursachen.

Dienst zu oft aufgerufen: <action name>

Dieser Fehler weist darauf hin, dass Sie Ihr Tageskontingent für eine Aktion überschritten haben, z. B. zu viele E-Mails gesendet haben. Die Kontingente variieren je nach Kontotyp und können sich ändern. Informationen zu den Limits finden Sie in der Dokumentation zu Kontingenten in Apps Script.

Server nicht verfügbar. oder Serverfehler. Bitte versuchen Sie es noch einmal.

Mögliche Ursachen:

  • Ein Google-Server ist vorübergehend nicht verfügbar. Warten Sie und versuchen Sie es noch einmal.
  • Für einen Fehler in Ihrem Skript gibt es keine entsprechende Meldung. Versuchen Sie, das Problem zu beheben.
  • Es gibt einen Fehler in Google Apps Script. Suchen Sie in Bugs nach Fehlerberichten und reichen Sie sie ein.

Für die Ausführung dieser Aktion ist eine Berechtigung erforderlich.

Dem Skript fehlt die Berechtigung, die für die Ausführung erforderlich ist. Wenn ein Skript über einen Trigger oder als Dienst ausgeführt wird, kann kein Autorisierungsdialog angezeigt werden.

Um das Skript zu autorisieren, öffnen Sie den Skripteditor und führen Sie eine beliebige Funktion aus. Wenn das Skript neue nicht autorisierte Dienste verwendet, müssen Sie es neu autorisieren.

Dieser Fehler wird häufig durch Trigger verursacht, die vor der Autorisierung oder nach dem Ablauf ausgelöst werden. Wenn ein Add-on diesen Fehler verursacht, verwenden Sie das Add-on noch einmal, um es neu zu autorisieren. Entfernen Sie problematische Trigger:

  1. Klicken Sie im Apps Script-Projekt auf Trigger .
  2. Klicken Sie neben dem Trigger auf das Dreipunkt-Menü > Trigger löschen.

Alternativ können Sie das Add-on deinstallieren.

Auch detaillierte Berechtigungen können auch diese Fehler verursachen. Informationen zum Schutz von Triggerausführungen finden Sie auf der Seite Autorisierungsbereiche.

Zugriff verweigert: DriveApp oder Drive-Apps von Drittanbietern wurden durch die Domainrichtlinie deaktiviert

Google Workspace-Administratoren können die Drive API für ihre Domain deaktivieren. Dadurch können Nutzer keine Drive-Apps oder Apps Script-Add-ons verwenden, die den Drive-Dienst nutzen.

Wenn ein Add-on oder eine Web-App für die domainweite Installation veröffentlicht und von einem Administrator installiert wird, funktionieren die Skriptfunktionen auch dann, wenn die Drive API deaktiviert ist.

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

Die Identität und E-Mail-Adresse des aktiven Nutzers sind nicht verfügbar. Dies ist auf Aufrufe von Session.getActiveUser() oder Session.getEffectiveUser() in anderen Autorisierungsmodi als AuthMode.FULL zurückzuführen. Wenn Ihr Skript über einen Trigger ausgeführt wird, finden Sie den Autorisierungsmodus in der authMode Eigenschaft des Apps Script-Ereignisobjekts.

Beheben Sie das Problem je nach Autorisierungsmodus:

  • Verwenden Sie in AuthMode.FULL stattdessen Session.getEffectiveUser().
  • Achten Sie in AuthMode.LIMITED darauf, dass der Inhaber das Skript autorisiert hat.
  • Vermeiden Sie in anderen Autorisierungsmodi den Aufruf einer der beiden Methoden.
  • Wenn Sie Google Workspace-Kunde sind und diese Warnung zum ersten Mal von einem installierbaren Triggererhalten, achten Sie darauf, dass der Trigger als Nutzer in Ihrer Organisation ausgeführt wird.

Bibliothek fehlt

Eine Bibliothek wird möglicherweise als fehlend gemeldet, wenn zu viele Nutzer gleichzeitig darauf zugreifen. So beheben Sie das Problem:

  • Kopieren Sie den Code der Bibliothek direkt in Ihr Skript.
  • Kopieren und stellen Sie die Bibliothek über Ihr eigenes Konto bereit.
  • Wenn die Bibliothek für die Funktion Ihres Skripts nicht erforderlich ist, entfernen Sie sie aus Ihrem Skriptprojekt.

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

Diese Fehlermeldung kann eine der folgenden Ursachen haben:

  • Die Skriptversion, die von einer Bereitstellung verwendet wird, wurde gelöscht. Bearbeiten Sie die Bereitstellung und wählen Sie eine andere Skriptversion aus, um das Problem zu beheben.
  • Eine Bibliotheksversion, die vom Skript verwendet wird, wurde gelöscht. Suchen Sie im Skripteditor unter „Bibliotheken“ nach der Bibliothek und aktualisieren Sie sie auf eine andere Version oder entfernen Sie sie, um das Problem zu beheben. Klicken Sie zum Aktualisieren auf die Versionsnummer und wählen Sie eine andere Version aus. Klicken Sie zum Entfernen auf das Dreipunkt-Menü > Entfernen.
  • Eine Bibliothek enthält eine andere Bibliothek und die Version dieser Bibliothek wurde gelöscht. Wenden Sie sich an den Autor der Bibliothek oder verwenden Sie eine andere Version der Bibliothek, die von Ihrem Skript verwendet wird, um das Problem zu beheben.

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

Wenn der Fehler Error 400: invalid_scope mit der Fehlermeldung Some requested scopes cannot be shown auftritt, haben Sie in der Datei appsscript.json des Apps Script-Projekts 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 zur Manifestdatei Ihres Apps Script-Projekts hinzufügen. Weitere Informationen finden Sie unter Explizite Bereiche festlegen.

Fügen Sie die entsprechenden Autorisierungsbereiche im Array oauthScopes zur Datei appsscript.json des Apps Script-Projekts hinzu, um den Fehler zu beheben. Wenn Sie beispielsweise die spaces.messages.create Methode 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 eine Zulassungsliste verwenden, um den Zugriff auf externe Domains zu steuern. Bitten Sie Ihren Administrator, die URL zur Zulassungsliste hinzuzufügen.

Verstoß gegen die Berechtigungsrichtlinie

Dieser Fehler tritt auf, wenn eine Anwendung, die HTMLService verwendet, versucht, Web APIs auszuführen, für die sensible Berechtigungen erforderlich sind, z. B. navigator.mediaDevices.getUserMedia() für den Zugriff auf die Kamera oder das Mikrofon. Die Sandbox-Umgebung von Apps Script beschränkt diese Funktionen, um die Sicherheit der Nutzer zu gewährleisten.

Hosten Sie die Funktion, für die diese Berechtigungen erforderlich sind, auf einer separaten Domain (außerhalb von Apps Script) und öffnen Sie sie in einem neuen Fenster oder Tab. Anschließend können Sie die erfassten Daten oder Antworten wie in diesem Beispiel an Ihre Apps Script-Anwendung zurücksenden.

Code.gs

function doGet(e) {
  return HtmlService.createHtmlOutputFromFile('Index')
      .setTitle('Media Devices Example');
}
function processCameraData(data) {
  Logger.log('Received data from client-side: ' + data);
  // Process data as needed
}

Index.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <button id="open-camera">Open Camera in New Window</button>
    <script>
      document.getElementById('open-camera').addEventListener('click', function() {
        // URL for external domain handling camera access & posting data back.
        // External page uses getUserMedia & window.opener.postMessage(...).
        var externalUrl = 'https://your-external-domain.com/camera';
        window.open(externalUrl, 'cameraWindow', 'width=600,height=400');
      });

      // Listen for messages from the external window.
      window.addEventListener('message', function(event) {
        // Check event.origin to ensure message is from the expected source.
        if (event.origin !== 'https://your-external-domain.com') {
          return;
        }
        console.log('Data received from external window:', event.data);
        // Send data to server-side Apps Script.
        google.script.run.processCameraData(event.data);
      });
    </script>
  </body>
</html>

Debugging

Einige Fehler sind subtil und lösen keine Meldungen aus. Beispielsweise kann Ihr Code möglicherweise ausgeführt werden, aber die Ergebnisse sind unerwartet. Verwenden Sie die folgenden Strategien, um Skripts zu untersuchen, die sich unerwartet verhalten.

Logging

Sie können Informationen während der Ausführung eines Skripts mit dem Cloud Logging-Dienst oder den Diensten „Logger“ und „Konsole“ im Skripteditor aufzeichnen.

Error Reporting

Wenn Sie Error Reporting in Google Cloud verwenden möchten, verwenden Sie ein Standardprojekt, das vom Nutzer verwaltet wird, anstelle eines Standardprojekts.

Wenn Sie ein Standardprojekt verwenden, werden Laufzeitfehler automatisch in Google Cloud Error Reporting aufgezeichnet. Sie können Cloud-Logs und Fehlerberichte in der Google Cloud Console ansehen.

Ausführungen

Google Apps Script zeichnet jede Ausführung auf, einschließlich Cloud-Logs. Klicken Sie auf Ausführungen , um Ausführungen anzusehen.

Dienststatus prüfen

Auf dem Google Workspace-Status-Dashboard können Sie nach Ausfällen von Google Workspace-Diensten suchen.

Debugger und Haltepunkte verwenden

Um Probleme in Ihrem Skript zu finden, können Sie es im Debugmodus ausführen. Im Debugmodus wird ein Skript angehalten, wenn es einen Haltepunkt erreicht. Ein Haltepunkt ist eine Zeile, die Sie in Ihrem Skript hervorgehoben haben und bei der Sie ein Problem vermuten. Wenn ein Skript angehalten 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, zu 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 Debugmodus ausführen

Klicken Sie oben im Editor auf Debuggen, um das Skript im Debugmodus auszuführen.

Bevor das Skript die Zeile mit dem Haltepunkt ausführt, wird es angehalten und eine Tabelle mit Debugging-Informationen angezeigt. In dieser Tabelle können Sie Daten wie die Werte von Parametern und die in Objekten gespeicherten Informationen prüfen.

Mit den Schaltflächen „Schritt in“, „Schritt über“ und „Schritt aus“ oben im Debugger-Bereich können Sie steuern, wie das Skript 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. In Google Apps Script können dynamisch generierte JavaScript-Skripts (JS) nicht im Skripteditor angezeigt werden, z. B. Skripts, die mit eval() und new Function() generiert wurden. Diese Skripts werden in der V8-Engine erstellt und ausgeführt, aber nicht als eigenständige Dateien im Editor dargestellt. Wenn Sie diese Skripts durchlaufen, tritt dieser Fehler auf.

Betrachten wir den folgenden Code:

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, tritt dieser Fehler auf. Wenn das Skript einen Kommentar //# sourceURL enthält, wird der Name im Aufrufstack angezeigt. Andernfalls wird es als unbenannter Eintrag angezeigt.

Trotz der Fehlermeldung bleibt die Debugging-Sitzung aktiv und die Ausführung kann fortgesetzt werden. Fahren Sie mit „Schritt in“, „Schritt aus“ oder „Ausführung fortsetzen“ fort. Dieser Fehler wird jedoch weiterhin angezeigt, solange die Ausführung im Bereich des dynamischen Skripts bleibt. Nachdem die Ausführung das dynamische Skript verlassen hat, 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 beim Zugriff auf Ihre Add-ons und Web-Apps. 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 mehr als einem Konto 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 privates Browserfenster und melden Sie sich in dem Google-Konto an, das das Add-on oder die Web-App enthält, auf die Sie zugreifen möchten.

Hilfe erhalten

Besuchen Sie unsere Supportseite, um Fragen zu stellen oder Fehler zu melden.