Odpowiadanie na pytania PO
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ę?
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 .
B) Czy to problem z kodem?
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:
ReferenceError: nie zdefiniowano elementu „playerArray”. (wiersz 12, plik „Kod”)
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
23 czerwca 2017 r
Usługa Stackdriver Logging została usunięta z wczesnego dostępu. Wszystkie skrypty mają teraz dostęp do logowania w usłudze Stackdriver.
Z Logging> Stackdriver logging
Poniższy przykład pokazuje, jak używać usługi konsoli do rejestrowania informacji w usłudze Stackdriver.
function measuringExecutionTime() {
console.info('Timing the %s function (%d arguments)', 'myFunction', 1);
var parameters = {
isValid: true,
content: 'some string',
timestamp: new Date()
};
console.log({message: 'Function Input', initialData: parameters});
var label = 'myFunction() time';
console.time(label);
try {
myFunction(parameters);
} catch (e) {
console.error('myFunction() yielded an error: ' + e);
}
console.timeEnd(label);
}