Rozwiązywanie problemów

Nawet najbardziej doświadczony deweloper rzadko zapisuje kod prawidłowo więc rozwiązywanie problemów jest ważną częścią procesu programowania. W w tej sekcji omówimy techniki, które pomogą Ci znajdować, interpretować i na debugowanie błędów w skryptach.

Komunikaty o błędach

Jeśli skrypt napotka błąd, wyświetli się komunikat o błędzie. Wiadomość wraz z numerem wiersza służącym do rozwiązywania problemów. Wyróżniamy 2 podstawowe wyświetlają się w ten sposób: błędy składni i błędy środowiska wykonawczego.

Błędy składniowe

Błędy składni są spowodowane przez pisanie kodu niezgodnego z JavaScriptem gramatyki, a błędy zostaną wykryte, gdy tylko spróbujesz zapisać skrypt. 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 z składnią polega na braku znaku ) na końcu czwartego wiersza. Gdy spróbujesz zapisać skrypt, pojawi się ten komunikat o błędzie:

Brak znaku ) za listą argumentów. (wiersz 4)

Tego typu błędy są zwykle łatwe do rozwiązania, ponieważ można je szybko znaleźć i mają zwykle proste przyczyny. Nie możesz zapisać który zawiera błędy składniowe, co oznacza, że w do swojego projektu.

Błędy w czasie wykonywania

Te błędy wynikają z nieprawidłowego użycia funkcji lub klasy. Te błędy mogą zostać wykryty po uruchomieniu skryptu. Na przykład ten kod powoduje błąd czasu 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 prawidłowo sformatowany, ale podczas wywoływania funkcji MailApp.sendEmail przekazujemy wartość „john” jako adres e-mail. Ponieważ nie jest to prawidłowy adres e-mail, podczas uruchamiania skryptu pojawia się ten błąd:

Nieprawidłowy adres e-mail: john (wiersz 5)

To, co sprawia, że naprawianie tych błędów jest trudniejsze, polega na tym, przekazywane do funkcji nie są zapisane w kodzie, ale pobierane z arkusza kalkulacyjnego, formularza lub innego zewnętrznego źródła danych. Za pomocą tych technik debugowania możesz zidentyfikować przyczynę tych błędów.

Typowe błędy

Poniżej znajdziesz listę typowych błędów i ich przyczyn.

Usługa została wywołana zbyt wiele razy: <action name>

Ten błąd oznacza, że dla danego działania przekroczono dzienny limit. Ten błąd może się pojawić, jeśli wysyłasz zbyt wiele e-maili w ciągu jednego dnia. Limity są ustalane na różnych poziomach dla konsumenta, domeny w wersji Premium i mogą ulec zmianie w dowolnym momencie, bez uprzedniego ogłoszone przez Google. Limity limity dla różnych działań znajdziesz w dokumentacji dotyczącej limitów w Apps Script.

Serwer jest niedostępny lub Wystąpił błąd serwera, spróbuj ponownie.

Oto kilka możliwych przyczyn tych błędów:

  • Serwer lub system Google są tymczasowo niedostępne. Zaczekaj chwilę i spróbuj jeszcze raz uruchomić skrypt.
  • W skrypcie występuje błąd, który nie ma przypisanego błędu . Spróbuj debugować skrypt i sprawdź, czy uda Ci się zlokalizować problem.
  • Ten błąd jest spowodowany błędem w Google Apps Script. Dla: instrukcji wyszukiwania i zgłaszania błędów można znaleźć w Błędy. Przed zgłoszeniem nowego błędu wyszukaj aby sprawdzić, czy ktoś już go zgłosił.

Do wykonania tej czynności wymagana jest autoryzacja.

Ten błąd oznacza, że skrypt nie ma wymaganych uprawnień do uruchomienia. Po uruchomieniu skryptu w edytorze skryptów lub z poziomu niestandardowego elementu menu jest wyświetlane użytkownikowi. Jednak po uruchomieniu skryptu z reguły, osadzonej na stronie w Witrynach Google lub uruchamiania jako usługa, nie można wyświetlić tego okna i wyświetla się ten błąd.

Aby autoryzować skrypt, otwórz Edytor skryptów i uruchom dowolną funkcję. pojawi się prośba o autoryzację projektu skryptu. Jeśli zawiera nowe nieautoryzowane usługi, musisz ponownie autoryzować skrypt.

Częstą przyczyną tego błędu są: reguły, które uruchamiają się przed tagiem autoryzował użytkownik. Jeśli nie masz dostępu do projektu skryptu (ponieważ błąd występuje w przypadku dodatku, na przykład), można zwykle autoryzować skrypt za pomocą dodatku ponownie. Jeśli reguła nadal się uruchamia i powoduje ten błąd, możesz usunąć wykonując te czynności:

  1. Po lewej stronie projektu Apps Script kliknij Aktywatory .
  2. Na prawo od reguły, którą chcesz usunąć, kliknij Więcej . &gt; Usuń aktywator.

Możesz też usunąć problematyczne reguły dodatków przez: odinstalowanie dodatku.

Odmowa dostępu: DriveApp lub zasada domeny wyłączyła aplikacje innych firm na Dysku

Administratorzy Google Workspace domen mają możliwość wyłączenia Drive API w swojej domenie, który uniemożliwia użytkownikom instalowanie aplikacji Dysku Google i korzystanie z nich. To ustawienie blokuje też użytkownikom żadnych dodatków Apps Script, które korzystają z usłudze Dysk lub Zaawansowana usługa Dysku (nawet jeśli skrypt został autoryzowany przed wyłączeniem interfejsu Drive API przez administratora).

Jeśli jednak dodatek lub aplikacja internetowa używająca usługi Dysk została opublikowana w domenie instalację w całej domenie i jest instalowany przez administratora dla niektórych lub wszystkich użytkowników w domenie, dla tych użytkowników, nawet jeśli interfejs Drive API jest wyłączony w w Twojej domenie.

Skrypt nie ma uprawnień do uzyskania tożsamości aktywnego użytkownika.

Oznacza, że tożsamość i adres e-mail aktywnego użytkownika są niedostępne w skrypt. To ostrzeżenie jest wynikiem wywołania do Session.getActiveUser() Może być również wynikiem wywołania funkcji Session.getEffectiveUser() jeśli skrypt działa w trybie autoryzacji innym niż AuthMode.FULL Jeśli to ostrzeżenie zostanie zasygnalizowane, kolejne wywołania User.getEmail() zwraca tylko „”.

Istnieje kilka sposobów rozwiązania tego problemu w zależności od w trybie autoryzacji, w którym działa skrypt. Tryb autoryzacji to widoczne w funkcjach wyzwalanych jako Właściwość authMode komponentu e parametru zdarzenia.

  • W aplikacji AuthMode.FULL możesz użyć: Session.getEffectiveUser() .
  • W narzędziu AuthMode.LIMITED sprawdź, czy właściciel autoryzował skrypt.
  • W innych trybach autoryzacji unikaj wywoływania dowolnej z tych metod.
  • Jeśli jesteś Google Workspace klientem od niedawna zobaczysz to ostrzeżenie z instalacyjny aktywator, sprawdź, czy reguła jest uruchomiona jako użytkownik w organizacji.

Brak biblioteki

Jeśli dodasz do skryptu popularną bibliotekę, może pojawić się komunikat o błędzie z informacją, że brakuje biblioteki, mimo że biblioteka jest wymieniona jako zależność skrypt. Przyczyną może być to, że zbyt wiele osób korzysta z biblioteki. z powrotem. Aby uniknąć tego błędu, wypróbuj jedno z tych rozwiązań:

  • Skopiuj i wklej kod biblioteki do skryptu i usuń bibliotekę zależności.
  • Skopiuj skrypt biblioteki i wdrożyć go jako bibliotekę na swoim koncie. Upewnij się, , aby zaktualizować zależność w pierwotnym skrypcie do nowej biblioteki a nie publicznego.

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 jedno z tych zdarzeń:

  • Wdrożona wersja skryptu została usunięta. Aby zaktualizować wdrożony skrypt, zapoznaj się z artykułem Edytuj wdrożenie z wersją.
  • Wersja biblioteki używanej przez skrypt została usunięta. Aby sprawdzić, który brakuje biblioteki, kliknij obok jej nazwy Więcej &gt; Otwórz w nowej karcie. Brakująca biblioteka powoduje wyświetlenie komunikatu o błędzie. Po znalezieniu biblioteki, którą chcesz zaktualizować, wykonaj jedną z tych czynności:
  • Skrypt biblioteki, z której korzysta Twój skrypt, zawiera inne która korzysta z usuniętej wersji. Wykonaj jedną z tych czynności:
    • Jeśli masz uprawnienia do edycji biblioteki używanej w skrypcie, zaktualizuj atrybut z biblioteki dodatkowej w tym skrypcie do istniejącej wersji.
    • Zaktualizuj bibliotekę, aby użyć innej wersji. Zobacz Aktualizowanie biblioteki.
    • Usuń bibliotekę z projektu skryptu i kodu. Zobacz Usuwanie biblioteki

Błąd 400: invalid_scope podczas wywoływania interfejsu Google Chat API w przypadku usługi zaawansowanej

Jeśli zobaczysz komunikat o błędzie Error 400: invalid_scope Some requested scopes cannot be shown, oznacza to, że nie zostały określone żadne zakresy autoryzacji w Plik appsscript.json projektu Apps Script. W większości przypadków Apps Script automatycznie określa zakresy, których potrzebuje skrypt, ale jeśli korzystasz z usługi zaawansowanej Google Chat, musisz ręcznie dodać zakresy autoryzacji używane przez skrypt w celu Plik manifestu projektu Apps Script. Zobacz Ustawianie jawnych zakresów.

Aby naprawić błąd, dodaj odpowiednie zakresy autoryzacji do pliku appsscript.json projektu Apps Script w ramach tablicę oauthScopes. Aby na przykład wywołać funkcję spaces.messages.create , dodaj następujące elementy:

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

UrlFetch nie może wywoływać adresu <URL> ze względu na ustawienia administratora

Administratorzy Google Workspace mogą włączyć listę dozwolonych w konsoli administracyjnej, aby kontrolować, do których domen zewnętrznych masz dostęp za pomocą Apps Script.

Aby naprawić ten błąd, skontaktuj się z administratorem i poproś go o dodanie adresu URL na liście dozwolonych.

Debugowanie

Nie wszystkie błędy powodują wyświetlenie komunikatu o błędzie. Może być ich więcej, drobny błąd. Kod jest poprawny pod względem technicznym i może zostać uruchomiony. nie są zgodne z Twoimi oczekiwaniami. Poniżej znajdziesz kilka strategii radzenia sobie z takimi sytuacjami i dalszego sprawdzania skryptu, który nie działa zgodnie z oczekiwaniami.

Logowanie

Podczas debugowania często warto zapisać informacje jako projekt skryptu, . Google Apps Script ma 2 metody rejestrowania informacji: usługę rejestrowania w chmurze oraz prostsze usługi rejestrowania i konsoli, które są wbudowane w edytorze Apps Script.

Więcej informacji znajdziesz w przewodniku dotyczącym logowania.

Error Reporting

Wyjątki spowodowane przez błędy czasu działania są automatycznie zarejestrowane przy użyciu usługi Google Cloud Error Reporting. Ta usługa umożliwia wyszukiwanie i filtrowanie komunikatów o wyjątkach tworzonych przez projekt skryptu.

Aby uzyskać dostęp do usługi Error Reporting, zapoznaj się z sekcją Wyświetlanie logów Cloud i raportów o błędach w Konsola Google Cloud Platform.

Uruchomienia

Przy każdym uruchomieniu skryptu Apps Script rejestruje jego wykonanie, łącznie z logami Cloud. Te rekordy mogą pomóc Ci zrozumieć, które jakie działania wykonał skrypt.

Aby wyświetlić wykonania skryptu w Projekt Apps Script, po lewej stronie kliknij Uruchomienia

Sprawdzam stan usługi Apps Script

Google Workspace jest rzadkie, choć czasem może być konkretne usług (takich jak Gmail czy Dysk); napotkać tymczasowe problemy, które mogą prowadzić do przerw w działaniu usługi. Kiedy to występuje, projekty Apps Script, które wchodzą w interakcje z tymi usługami, mogą nie działać zgodnie z oczekiwaniami.

Możesz sprawdzić, czy istnieje usługa Google Workspace przestaje być widoczna, wyświetlając Panel stanu Google Workspace. Jeśli przerwa w działaniu usługi obecnie czekasz na jego rozwiązanie lub dodatkowej pomocy Centrum pomocy Google Workspace lub Znane problemy z Google Workspace dokumentacji.

Korzystanie z debugera i punktów przerwania

Aby znaleźć problemy w skrypcie, możesz go uruchomić w trybie debugowania. Po uruchomieniu w w trybie debugowania skrypt wstrzymuje się po dotarciu do punktu przerwania, czyli wiersza w skrypcie, które Twoim zdaniem mogą być przyczyną problemu. Kiedy skrypt powoduje wstrzymanie wyświetlania. wartość każdej zmiennej w danym momencie, dzięki czemu możesz sprawdzić wewnętrzne mechanizmy skryptu bez konieczności dodawania wielu instrukcji logowania.

Dodaj punkt przerwania

Aby dodać punkt przerwania, najedź kursorem na numer wiersza wiersza, do którego chcesz dodać między punktami przerwania. Kliknij kółko po lewej stronie numeru wiersza. Poniższe informacje obraz przedstawia przykład punktu przerwania dodanego do skryptu:

Dodaj punkt przerwania

Uruchamianie skryptu w trybie debugowania

Aby uruchomić skrypt w trybie debugowania, u góry edytora kliknij Debuguj.

Zanim skrypt uruchomi wiersz z punktem przerwania, wstrzymuje działanie i wyświetla komunikat tabeli z informacjami o debugowaniu. Za pomocą tej tabeli możesz analizować dane takie jak wartości parametrów i informacji przechowywanych w obiektach.

Aby sterować sposobem uruchamiania skryptu, u góry panelu Debuger kliknij za pomocą klawiszy „Wejdź”, „Wejdź” i „wyjście”. przyciskami. Dzięki nim możesz uruchamiać skrypt po 1 wierszu i sprawdzanie, jak wartości zmieniają się w czasie.

Problemy z wieloma kontami Google

Jeśli jesteś zalogowany na kilka kont Google jednocześnie, być mają problemy z dostępem do dodatków i aplikacji internetowych. wielokrotne logowanie lub są zalogowane na wiele kont Google jednocześnie, nie jest obsługiwane Skrypty, dodatki lub aplikacje internetowe.

  • Jeśli otworzysz edytor Apps Script po zalogowaniu się na więcej niż jedno konto, Potwierdzenia od Google aby wybrać konto, z którego chcesz kontynuować.

  • Jeśli po otwarciu aplikacji internetowej lub dodatku występują problemy z wielokrotnym logowaniem, wypróbuj jedno z tych rozwiązań: następujące rozwiązania:

    • Wyloguj się ze wszystkich kont Google i zaloguj się tylko na to, na którym znajduje się dodatek lub aplikacja internetowa, do której chcesz uzyskać dostęp.
    • Otwarcie okna incognito w Google Chrome lub równoważnego przeglądania prywatnego. i zaloguj się na konto Google z dodatkiem lub aplikacją internetową do którego chcesz uzyskać dostęp.

Uzyskiwanie pomocy

Debugowanie problemu za pomocą wymienionych powyżej narzędzi i technik może rozwiązać różne różne problemy. Mogą jednak występować problemy, które wymagają pomoc w rozwiązaniu problemu. Odwiedź naszą stronę pomocy dla miejsca, gdzie można zadawać pytania i zgłaszać błędy.