Jestem bardzo nowy w programowaniu (wziąłem udział w niektórych kursach JS na Codecademy). Próbuję stworzyć prosty skrypt, który określi, czy otrzymam arkusz kalkulacyjny z wynikami gry w pokera, kto powinien zapłacić komu. Otworzyłem Google Apps Script i napisałem, aby rozpocząć:
function addplayerstoArray(numplayers) {
var playerArray = [];
for (i=0; i<numplayers; i++) {
playerArray.push(i);
}
}
addplayerstoArray(7);
console.log(playerArray[3])
Chodzi o to, aby utworzyć tablicę z całkowitą liczbą graczy w niej. Podczas uruchamiania kodu pomyślałem, że wypisze na konsoli „3”. Ale nic się nie stało. Powiedziało
„ReferenceError:„ console ”nie jest zdefiniowana.”
A) Czego nie rozumiem na temat działania konsoli Google Apps Script w odniesieniu do drukowania, aby zobaczyć, czy mój kod wykonuje to, co chcę?
B) Czy to problem z kodem?
źródło
Aby zbudować na powyższym zhackowanym rozwiązaniu Vinniefa, używam MsgBox w następujący sposób:
Browser.msgBox('BorderoToMatriz', Browser.Buttons.OK_CANCEL);
i zachowuje się jak punkt przerwania, zatrzymuje skrypt i wysyła potrzebny ciąg do wyskakującego okienka. Szczególnie w Arkuszach, gdzie mam problem z Logger.log, zapewnia to odpowiednie obejście w większości przypadków.
źródło
Mimo że
Logger.log()
jest to technicznie poprawny sposób wyprowadzenia czegoś na konsolę, ma kilka niedogodności:Logger.log(playerArray)
, a następnie po debugowaniu prawdopodobnie zechcesz usunąćLogger.log(playerArray)
, stąd dodatkowe 1-2 dodatkowe kroki.Zamiast tego, gdy chcę coś debugować, dodaję punkty przerwania (kliknij numer wiersza) i naciśnij przycisk Debuguj (ikona błędu). Punkty przerwania działają dobrze, gdy przypisujesz coś do zmiennej, ale nie tak dobrze, gdy inicjujesz zmienną i chcesz zajrzeć do niej w późniejszym momencie, co jest podobne do tego, co próbuje zrobić operacja. W tym przypadku wymusiłbym warunek przerwania, wprowadzając „x” (x oznacza miejsce!), Aby wyświetlić błąd czasu wykonania:
Porównaj z przeglądaniem dzienników:
Konsola debugowania zawiera więcej informacji i jest o wiele łatwiejsza do odczytania niż nakładka Dzienniki. Jedną z drobnych zalet tej metody jest to, że nigdy nie musisz się martwić o zanieczyszczenie swojego kodu wieloma poleceniami rejestrowania, jeśli chcesz zachować czysty kod. Nawet jeśli wpiszesz "x", będziesz zmuszony pamiętać o usunięciu go w ramach procesu debugowania, w przeciwnym razie twój kod nie będzie działał (wbudowany środek czyszczący, yay).
źródło
x
miałoby taką samą funkcjonalność jak dodawaniedebugger;
Odpowiadanie na pytania PO
Kod plików .gs projektu Google Apps Script jest uruchamiany na serwerze, a nie w przeglądarce internetowej. Sposobem na rejestrowanie komunikatów było użycie Class Logger .
Jak powiedział komunikat o błędzie, problem polegał na tym, że
console
nie został zdefiniowany, ale obecnie ten sam kod będzie generował inny błąd:Dzieje się tak, ponieważ playerArray jest zdefiniowana jako zmienna lokalna. Przeniesienie linii z funkcji rozwiąże ten problem.
var playerArray = []; function addplayerstoArray(numplayers) { for (i=0; i<numplayers; i++) { playerArray.push(i); } } addplayerstoArray(7); console.log(playerArray[3])
Teraz, gdy kod jest wykonywany bez generowania błędów, zamiast spojrzeć na konsolę przeglądarki, powinniśmy przyjrzeć się usłudze Stackdriver Logging. W interfejsie użytkownika edytora Google Apps Script kliknij Widok> Stackdriver Logging .
Uzupełnienie
W 2017 roku Google wypuściło do wszystkich skryptów Stackdriver Logging i dodało Class Console, więc dołączenie czegoś takiego jak
console.log('Hello world!')
nie spowoduje błędu ale log będzie na Google Cloud Platform Stackdriver Logging Service zamiast w konsoli przeglądarki.Z Google Apps Script Release Notes 2017
Z Logging> Stackdriver logging
źródło
W projekcie skryptu Google możesz tworzyć pliki html (przykład: index.html) lub pliki gs (przykład: code.gs). Pliki .gs są wykonywane na serwerze i możesz użyć Logger.log, jak opisuje @Peter Herrman. Jeśli jednak funkcja jest utworzona w pliku .html, jest wykonywana w przeglądarce użytkownika i możesz użyć console.log. Konsolę przeglądarki Chrome można wyświetlić , naciskając Ctrl Shift J w systemie Windows / Linux lub Cmd Opt J na komputerze Mac
Jeśli chcesz użyć Logger.log na plik HTML można użyć scriptlet aby wywołać funkcję Logger.log z pliku html. Aby to zrobić, wstawiłbyś <? Logger.log (coś)?> Podmieniam coś na cokolwiek chcesz logować. Standardowe skrypty, które używają składni <? ...?>, wykonaj kod bez jawnego wysyłania treści na stronę.
źródło
Zaktualizowano na rok 2020
W lutym 2020 r. Firma Google ogłosiła poważną aktualizację do wbudowanego środowiska IDE Google Apps Script, które obsługuje teraz console.log () . Możesz więc teraz używać obu:
Miłego kodowania!
źródło
console.log
był obsługiwany wcześniej niż wspomniana aktualizacja (patrz moja odpowiedź )