Nawet najbardziej doświadczeni deweloperzy rzadko piszą kod poprawnie za pierwszym razem, dlatego rozwiązywanie problemów jest ważną częścią procesu programowania. W tej sekcji znajdziesz techniki wyszukiwania, rozumienia i debugowania błędów w skryptach.
Komunikaty o błędach
Gdy skrypt napotka błąd, pojawi się komunikat o błędzie z numerem wiersza. Istnieją 2 podstawowe rodzaje błędów: błędy składniowe i błędy czasu działania.
Błędy składniowe
Błędy składniowe występują, gdy kod nie jest zgodny z gramatyką JavaScriptu. Są one wykrywane podczas zapisywania skryptu. Na przykład ten fragment kodu zawiera błąd składni:
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);
}
Problem polega na braku znaku ) na końcu wiersza 4. Gdy zapiszesz skrypt, pojawi się ten błąd:
Brak znaku ) po liście argumentów. (wiersz 4)
Błędy te są wykrywane natychmiast, co ułatwia ich rozwiązywanie. W projekcie zostanie zapisany tylko prawidłowy kod.
Błędy w czasie wykonywania
Błędy czasu działania występują, gdy funkcja lub klasa jest używana nieprawidłowo. Są one wykrywane podczas działania skryptu. Na przykład ten kod powoduje błąd w czasie działania:
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);
}
Kod jest poprawnie sformatowany, ale „john” to nieprawidłowy adres e-mail. Wystąpił ten błąd:
Nieprawidłowy adres e-mail: john (wiersz 5)
Błędy te są trudne do wykrycia, ponieważ dane są często pobierane ze źródeł zewnętrznych, takich jak arkusze kalkulacyjne lub formularze. Użyj technik debugowania, aby zidentyfikować przyczynę.
Typowe błędy
Poniżej znajdziesz listę typowych błędów i ich przyczyn.
Usługa wywołana zbyt wiele razy: <action name>
Ten błąd oznacza, że przekroczono dzienny limit działania, np. wysłano zbyt wiele e-maili. Limity różnią się w zależności od typu konta i mogą ulec zmianie. Limity znajdziesz w dokumentacji limitów Apps Script.
Serwer jest niedostępny lub Wystąpił błąd serwera.Spróbuj ponownie.
Możliwe przyczyny:
- Serwer Google jest tymczasowo niedostępny. Poczekaj i spróbuj ponownie.
- Błąd w skrypcie nie ma odpowiadającego mu komunikatu. Spróbuj debugować, aby wyodrębnić problem.
- W Google Apps Script występuje błąd. Wyszukiwanie i zgłaszanie błędów w sekcji Błędy.
Do wykonania tej czynności wymagana jest autoryzacja.
Skrypt nie ma uprawnień wymaganych do uruchomienia. Gdy skrypt jest uruchamiany przez wyzwalacz lub jako usługa, nie można wyświetlić okna autoryzacji.
Aby autoryzować skrypt, otwórz edytor skryptów i uruchom dowolną funkcję. Jeśli skrypt korzysta z nowych nieautoryzowanych usług, musisz ponownie go autoryzować.
Przyczyną tego błędu są często wyzwalacze, które uruchamiają się przed autoryzacją lub po wygaśnięciu uprawnień. Jeśli przyczyną jest dodatek, użyj go ponownie, aby ponownie autoryzować dostęp. Usuń problematyczne reguły:
- W projekcie Apps Script kliknij Triggery .
- Obok reguły kliknij Więcej > Usuń regułę.
Możesz też odinstalować dodatek.
Te błędy mogą być też spowodowane szczegółowymi uprawnieniami. Aby chronić wykonywanie wyzwalaczy, zapoznaj się ze stroną zakresów autoryzacji.
Odmowa dostępu: DriveApp lub Zasady domeny Twojego konta spowodowały wyłączenie aplikacji innych firm na Dysku
Administratorzy Google Workspace mogą wyłączyć Drive API w swojej domenie, co uniemożliwi użytkownikom korzystanie z aplikacji na Dysku lub dodatków Apps Script, które korzystają z usługi Dysku.
Jeśli dodatek lub aplikacja internetowa jest opublikowana w celu zainstalowania w całej domenie i zainstalowana przez administratora, skrypt działa nawet wtedy, gdy interfejs Drive API jest wyłączony.
Skrypt nie ma uprawnień do uzyskania tożsamości aktywnego użytkownika.
Tożsamość i adres e-mail aktywnego użytkownika są niedostępne. Wynika to z wywołań Session.getActiveUser() lub Session.getEffectiveUser() w trybach autoryzacji innych niż AuthMode.FULL.
Jeśli skrypt jest uruchamiany przez wyzwalacz, tryb autoryzacji znajdziesz we właściwości authMode obiektu zdarzenia Apps Script.
Rozwiąż ten problem w zależności od trybu autoryzacji:
- W przypadku
AuthMode.FULLrozważ użycieSession.getEffectiveUser()zamiast niej. - W
AuthMode.LIMITEDsprawdź, czy właściciel autoryzował skrypt. - W innych trybach autoryzacji unikaj wywoływania obu tych metod.
- Jeśli jesteś klientem Google Workspace i niedawno pojawiło się to ostrzeżenie dotyczące instalowanego wyzwalacza, upewnij się, że wyzwalacz jest uruchamiany jako użytkownik w Twojej organizacji.
Brak biblioteki
Biblioteka może zostać zgłoszona jako brakująca, jeśli zbyt wiele osób korzysta z niej jednocześnie. Aby rozwiązać ten problem:
- Skopiuj kod biblioteki bezpośrednio do skryptu.
- Skopiuj i wdroż bibliotekę z własnego konta.
- Jeśli biblioteka nie jest wymagana do działania skryptu, usuń ją z projektu skryptu.
Wystąpił błąd z powodu brakującej wersji biblioteki lub wersji wdrożenia. Kod błędu Not_Found
Ten komunikat o błędzie oznacza jedną z tych sytuacji:
- Wersja skryptu używana przez wdrożenie została usunięta. Aby rozwiązać ten problem, edytuj wdrożenie i wybierz inną wersję skryptu.
- Wersja biblioteki używana przez skrypt została usunięta. Aby rozwiązać ten problem, w edytorze skryptów w sekcji „Biblioteki” znajdź bibliotekę i zaktualizuj ją do innej wersji lub usuń. Aby zaktualizować wersję, kliknij numer wersji i wybierz inną wersję. Aby usunąć, kliknij Więcej > Usuń.
- Biblioteka zawiera inną bibliotekę, a wersja tej biblioteki została usunięta. Aby rozwiązać ten problem, skontaktuj się z autorem biblioteki lub użyj innej wersji biblioteki, z której korzysta Twój skrypt.
Błąd 400: invalid_scope podczas wywoływania interfejsu Google Chat API za pomocą usługi zaawansowanej
Jeśli zobaczysz znak Error 400: invalid_scope z komunikatem o błędzieSome requested scopes cannot be shown, oznacza to, że w pliku appsscript.json projektu Apps Script nie określono żadnych zakresów autoryzacji. W większości przypadków Apps Script automatycznie określa zakresy, których potrzebuje skrypt, ale gdy używasz usługi zaawansowanej Google Chat, musisz ręcznie dodać zakresy autoryzacji używane przez skrypt do pliku manifestu projektu Apps Script. Zobacz Ustawianie jawnych zakresów.
Aby naprawić ten błąd, dodaj odpowiednie zakresy autoryzacji do pliku appsscript.json projektu Apps Script w ramach tablicy oauthScopes. Aby na przykład wywołać metodę
spaces.messages.create
, dodaj ten kod:
"oauthScopes": [
"https://www.googleapis.com/auth/chat.messages.create"
]
Administrator nie zezwala na wywoływanie adresu <URL> przez UrlFetch
Administratorzy Google Workspace mogą używać listy dozwolonych, aby kontrolować dostęp do domen zewnętrznych. Aby dodać adres URL do listy dozwolonych, skontaktuj się z administratorem.
Debugowanie
Niektóre błędy są subtelne i nie powodują wyświetlania komunikatów. Na przykład kod może się wykonywać, ale wyniki są nieoczekiwane. Aby zbadać skrypty, które działają w nieoczekiwany sposób, skorzystaj z tych strategii.
Logowanie
Rejestruj informacje podczas wykonywania skryptu za pomocą usługi Cloud Logging lub usług Logger i console w edytorze skryptów.
Error Reporting
Aby korzystać z Error Reporting w Google Cloud, używaj standardowego projektu zarządzanego przez użytkownika zamiast projektu domyślnego.
Jeśli używasz standardowego projektu, błędy środowiska wykonawczego są automatycznie rejestrowane w Google Cloud Error Reporting. Wyświetlanie logów i raportów o błędach w konsoli Google Cloud
Uruchomienia
Google Apps Script rejestruje każde wykonanie, w tym dzienniki Cloud. Aby wyświetlić wykonania, kliknij Wykonania .
Sprawdzanie stanu usługi
Sprawdź, czy nie występują awarie usług Google Workspace, w Panelu stanu Google Workspace.
Korzystanie z debugera i punktów przerwania
Aby znaleźć problemy w skrypcie, możesz uruchomić go w trybie debugowania. Gdy skrypt jest uruchamiany w trybie debugowania, zatrzymuje się po osiągnięciu punktu przerwania, czyli wiersza, który został wyróżniony w skrypcie i w którym może występować problem. Gdy skrypt zostanie wstrzymany, wyświetli wartość każdej zmiennej w danym momencie, co pozwoli Ci sprawdzić wewnętrzne działanie skryptu bez konieczności dodawania wielu instrukcji rejestrowania.
Dodawanie punktu przerwania
Aby dodać punkt przerwania, najedź kursorem na numer wiersza, do którego chcesz dodać punkt przerwania. Po lewej stronie numeru wiersza kliknij kółko. Obraz poniżej przedstawia przykład punktu przerwania dodanego do skryptu:

Uruchamianie skryptu w trybie debugowania
Aby uruchomić skrypt w trybie debugowania, u góry edytora kliknij Debuguj.
Przed uruchomieniem wiersza z punktem przerwania skrypt zatrzymuje się i wyświetla tabelę informacji o debugowaniu. W tej tabeli możesz sprawdzać dane, takie jak wartości parametrów i informacje przechowywane w obiektach.
Aby sterować sposobem uruchamiania skryptu, u góry panelu Debugger użyj przycisków „Step in” (Krok w głąb), „Step over” (Krok dalej) i „Step out” (Krok na zewnątrz). Umożliwiają one uruchamianie skryptu wiersz po wierszu i sprawdzanie, jak zmieniają się wartości w czasie.
Błąd: kod źródłowy bieżącego wiersza jest niedostępny

Ten błąd pojawia się, gdy aktywny plik debugowania jest niedostępny.
Google Apps Script nie obsługuje wyświetlania w edytorze skryptów generowanych dynamicznie skryptów JavaScript (JS), takich jak te generowane za pomocą eval() i new Function(). Te skrypty są tworzone i wykonywane w silniku V8, ale nie są reprezentowane jako osobne pliki w edytorze.
Jeśli przejdziesz do tych skryptów, zobaczysz ten błąd.
Rozważmy na przykład ten kod:
function myFunction() {
eval('a=2');
}
Gdy wywoływana jest funkcja eval(), jej argument jest traktowany jako kod JS i uruchamiany jako dynamicznie utworzony skrypt w silniku V8. Jeśli przejdziesz do funkcji eval(), pojawi się ten błąd. Jeśli skrypt zawiera //# sourceURL komentarz, jego nazwa
jest widoczna w stosie wywołań. W przeciwnym razie pojawi się jako wpis bez nazwy.
Pomimo komunikatu o błędzie sesja debugowania pozostaje aktywna i można kontynuować wykonywanie. Aby kontynuować, przejdź do kroku „Wejdź”, „Wyjdź” lub „Wznów wykonywanie”. Ten błąd będzie się jednak nadal pojawiać, dopóki wykonywanie pozostanie w zakresie skryptu dynamicznego. Po wyjściu z dynamicznego skryptu debugowanie jest kontynuowane bez tego błędu.
Problemy z korzystaniem z kilku kont Google
Jeśli logujesz się na kilka kont Google jednocześnie, możesz mieć problemy z dostępem do dodatków i aplikacji internetowych. Logowanie się na wiele kont (korzystanie z kilku kont Google jednocześnie) nie jest obsługiwane w przypadku Apps Script, dodatków i aplikacji internetowych.
Jeśli otworzysz edytor skryptów, gdy jesteś zalogowany(-a) na więcej niż 1 konto, Google poprosi Cię o wybranie konta, którego chcesz użyć.
Jeśli otworzysz aplikację internetową lub dodatek i wystąpią problemy z jednoczesnym korzystaniem z kilku kont, wypróbuj jeden z tych sposobów:
- Wyloguj się ze wszystkich kont Google i zaloguj się tylko na to, na którym znajduje się dodatek lub aplikacja internetowa, do których chcesz uzyskać dostęp.
- Otwórz okno incognito w Google Chrome lub inne okno przeglądania prywatnego i zaloguj się na konto Google, na którym znajduje się dodatek lub aplikacja internetowa, do których chcesz uzyskać dostęp.
Uzyskiwanie pomocy
Odwiedź naszą stronę pomocy, aby zadać pytania lub zgłosić błędy.