Eu sou muito novo em programação (fiz alguns dos cursos JS em Codecademy). Estou tentando criar um script simples para determinar, se for dada uma planilha com os resultados de um jogo de pôquer, quem deve pagar quem. Abri o Google Apps Script e escrevi o seguinte para começar:
function addplayerstoArray(numplayers) {
var playerArray = [];
for (i=0; i<numplayers; i++) {
playerArray.push(i);
}
}
addplayerstoArray(7);
console.log(playerArray[3])
A ideia é criar um array com o número total de jogadores nele. Ao executar o código, pensei que imprimiria "3" no console. Mas nada aconteceu. Disse
"ReferenceError:" console "não está definido."
A) O que eu não entendo sobre como o console do Google Apps Script funciona com relação à impressão para que eu possa ver se meu código está funcionando como eu gostaria?
B) É um problema com o código?
fonte
Apenas para desenvolver a solução hacky de vinnief acima, eu uso MsgBox assim:
Browser.msgBox('BorderoToMatriz', Browser.Buttons.OK_CANCEL);
e atua como um ponto de interrupção, interrompe o script e exibe qualquer string de que você precisa em uma caixa pop-up. Acho que, especialmente em Planilhas, onde tenho problemas com Logger.log, isso fornece uma solução alternativa adequada na maioria das vezes.
fonte
Embora
Logger.log()
seja tecnicamente a maneira correta de enviar algo para o console, há alguns incômodos:Logger.log(playerArray)
e, depois de depurar, provavelmente deseja removerLogger.log(playerArray)
; portanto, mais 1-2 etapas adicionais.Em vez disso, sempre que quero depurar algo, adiciono pontos de interrupção (clique no número da linha) e pressiono o botão Depurar (ícone de bug). Os pontos de interrupção funcionam bem quando você está atribuindo algo a uma variável, mas não tão bem quando você está iniciando uma variável e quer dar uma olhada dentro dela em um ponto posterior, que é semelhante ao que o op está tentando fazer. Nesse caso, eu forçaria uma condição de interrupção inserindo "x" (x marca o local!) Para lançar um erro de tempo de execução:
Compare com a exibição de Logs:
O console de depuração contém mais informações e é muito mais fácil de ler do que a sobreposição de registros. Um pequeno benefício desse método é que você nunca precisa se preocupar em poluir seu código com um monte de comandos de registro se você preferir manter o código limpo. Mesmo se você inserir "x", será forçado a lembrar de removê-lo como parte do processo de depuração, caso contrário, seu código não será executado (medida de limpeza integrada, yay).
fonte
x
seria a mesma funcionalidade que adicionardebugger;
Respondendo às perguntas do OP
O código em arquivos .gs de um projeto do Google Apps Script executado no servidor em vez de no navegador da web. A maneira de registrar as mensagens era usar o Class Logger .
Como dizia a mensagem de erro, o problema era que
console
não estava definido, mas hoje em dia o mesmo código vai lançar outro erro:Isso ocorre porque o playerArray é definido como variável local. Mover a linha para fora da função resolverá isso.
var playerArray = []; function addplayerstoArray(numplayers) { for (i=0; i<numplayers; i++) { playerArray.push(i); } } addplayerstoArray(7); console.log(playerArray[3])
Agora que o código é executado sem gerar erros, em vez de olhar o console do navegador, devemos olhar o Stackdriver Logging. Na IU do editor do Google Apps Script, clique em Exibir> Stackdriver Logging .
Termo aditivo
Em 2017, o Google lançou o Stackdriver Logging para todos os scripts e adicionou o Class Console, incluindo algo como
console.log('Hello world!')
não gerará um erro, mas o log estará no Google Cloud Platform Stackdriver Logging Service em vez do console do navegador.Das notas de lançamento do Google Apps Script 2017
Em Logging> Stackdriver Logging
fonte
Em um projeto de script do google, você pode criar arquivos html (exemplo: index.html) ou arquivos gs (exemplo: code.gs). Os arquivos .gs são executados no servidor e você pode usar Logger.log como @Peter Herrman descreve. No entanto, se a função for criada em um arquivo .html, ela está sendo executada no navegador do usuário e você pode usar console.log. O console do navegador Chrome pode ser visualizado por Ctrl Shift J no Windows / Linux ou Cmd Opt J no Mac
Se quiser usar Logger.log em um arquivo html, você pode usar um scriptlet para chamar a função Logger.log a partir do arquivo html. Para fazer isso, você deve inserir <? Logger.log (algo)?> Substituindo algo pelo que você deseja registrar. Scriptlets padrão, que usam a sintaxe <? ...?>, execute o código sem enviar explicitamente o conteúdo para a página.
fonte
Atualizado para 2020
Em fevereiro de 2020, o Google anunciou uma grande atualização para o IDE embutido do Google Apps Script, que agora oferece suporte a console.log () . Então, agora você pode usar ambos:
Boa codificação!
fonte
console.log
era suportado antes do referido upgrade (ver minha resposta )