No Planilhas Google, você pode adicionar algumas funcionalidades de script. Estou adicionando algo para o onEdit
evento, mas não sei dizer se está funcionando. Pelo que sei, você não pode depurar um evento ao vivo no Google Sheets, portanto, você deve fazê-lo no depurador, o que é inútil, pois o argumento do evento passado para minha onEdit()
função sempre será indefinido se eu o executar no Script Editor
.
Então, eu estava tentando usar o Logger.log
método para registrar alguns dados sempre que a onEdit
função é chamada, mas isso também parece que só funciona quando executado a partir do Script Editor
. Ao executá-lo no Script Editor
, posso visualizar os logs acessandoView->Logs...
Eu esperava poder ver os logs quando o evento realmente for executado, mas não consigo descobrir.
Como depuro essas coisas?
fonte
Logger.log('firstLog');MailApp.sendEmail({to:'[email protected]',subject: "subject here ^_^",body: Logger.getLog()});
Respostas:
ATUALIZAR:
Como está escrito nesta resposta,
O registro no Stackdriver é o método preferido de registro agora.
Use
console.log()
para fazer logon no Stackdriver.Logger.log
enviará a você um e-mail (eventualmente) de erros que ocorreram em seus scripts ou, se você estiver executando alguma coisaScript Editor
, poderá visualizar o log da última função de execução acessandoView->Logs
(ainda no editor de scripts). Novamente, isso mostrará apenas o que foi registrado na última função que você executou de dentroScript Editor
.O script que eu estava tentando trabalhar tinha a ver com planilhas - criei uma coisa do tipo lista de verificação de toda a planilha que classificava os itens por prioridades e afins.
Os únicos gatilhos que instalei para esse script foram os gatilhos onOpen e onEdit. Depurar o gatilho onEdit foi o mais difícil de descobrir, porque eu continuava pensando que, se eu definisse um ponto de interrupção na minha função onEdit, abrisse a planilha, editasse uma célula, que meu ponto de interrupção seria acionado. Este não é o caso.
Para simular ter editado uma célula, eu queria acabar por ter de fazer algo na planilha real embora. Tudo o que fiz foi garantir que a célula que eu queria tratar como "editada" fosse selecionada e, em seguida
Script Editor
, eu iria paraRun->onEdit
. Então meu ponto de interrupção seria atingido.No entanto, tive que parar de usar o argumento de evento que é passado para a função onEdit - você não pode simular isso
Run->onEdit
. Qualquer informação que eu precisasse da planilha, como qual célula foi selecionada, etc., tive que descobrir manualmente.Enfim, resposta longa, mas eu descobri isso eventualmente.
EDIT :
Se você quiser ver a lista de tarefas que eu fiz, você pode conferir aqui
(sim, eu sei que alguém pode editá-lo - esse é o ponto de compartilhá-lo!)
Eu esperava que isso deixasse você ver o script também. Como você não pode vê-lo, aqui está:
fonte
Verdadeiro - defina você mesmo o argumento do evento para depuração. Consulte Como posso testar uma função de gatilho no GAS?
É verdade novamente, mas há ajuda. A biblioteca BetterLog de Peter Hermann redirecionará todos os logs para uma planilha, permitindo o registro mesmo a partir do código não anexado a uma instância do editor / depurador.
Se você estiver codificando um script contido em uma planilha, por exemplo, poderá adicionar apenas uma linha na parte superior do arquivo de script, e todos os logs irão para uma planilha "Logs" na planilha. Nenhum outro código é necessário, basta usar
Logger.log()
como você faria normalmente:fonte
console.log()
deve ser a melhor resposta agoraAtualização de 2017: o registro do Stackdriver já está disponível para o Script do Google Apps. Na barra de menus no editor de scripts, vá
View > Stackdriver Logging
para : para visualizar ou transmitir os logs.console.log () vai escrever
DEBUG
mensagens de nívelExemplo de
onEdit()
log:Em seguida, verifique os logs na UI do Stackdriver rotulados
onEdit() Event Object
para ver a saídafonte
Logger.log
. Como isso é diferente doconsole.log
que você usa? Sou muito novo nas ferramentas, apenas tentando descobrir o que é tudo.Um pouco hacky, mas criei uma matriz chamada "console" e, a qualquer momento, desejava enviar para a console e enviei para a matriz. Então, sempre que eu queria ver a saída real, eu apenas retornava em
console
vez do que estava retornando antes.fonte
console.log('smth')
funciona perfeitamente, mas e no GAS?I just returned console
você produz?Se você tiver o editor de scripts aberto, verá os logs em Exibir-> Logs. Se o seu script tiver um gatilho onedit, faça uma alteração na planilha que deve disparar a função com o editor de scripts aberto em uma segunda guia. Em seguida, vá para a guia do editor de scripts e abra o log. Você verá o que sua função passar para o registrador.
Basicamente, desde que o editor de scripts esteja aberto, o evento gravará no log e o mostrará para você. Não será exibido se outra pessoa estiver no arquivo em outro lugar.
fonte
Passei por esses posts e de alguma forma acabei encontrando uma resposta simples, que estou postando aqui para aqueles que desejam soluções curtas e agradáveis:
console.log("Hello World")
no seu script.fonte
Estou tendo o mesmo problema, encontrei o abaixo na web em algum lugar ....
Os manipuladores de eventos no Docs são um pouco complicados. Como os documentos podem manipular várias edições simultâneas por vários usuários, os manipuladores de eventos são tratados no lado do servidor. O principal problema dessa estrutura é que, quando um script de acionador de eventos falha, ele falha no servidor. Se você quiser ver as informações de depuração, precisará configurar um gatilho explícito no menu de gatilhos que envia por e-mail as informações de depuração quando o evento falha, ou então falha silenciosamente.
fonte
Está longe de ser elegante, mas durante a depuração, costumo fazer logon no Logger e, em seguida, uso getLog () para buscar seu conteúdo. Então eu:
Essencialmente, ele se torna uma saída JavaScript problema de .
Falta totalmente à funcionalidade das
console.log()
implementações modernas , mas o Logger ainda ajuda a depurar scripts do Google.fonte
Apenas como um aviso. Eu fiz uma função de teste para minha planilha. Eu uso a variável google lança na função onEdit (e) (eu chamei de e). Então eu fiz uma função de teste assim:
A chamada dessa função de teste faz com que todo o código seja executado como você teve um evento na planilha. Acabei de colocar a célula que editei, o que me deu um resultado inesperado, definindo valor como o valor que coloquei na célula. OBS! para obter mais variáveis, o googles fornece a função, acesse aqui: https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events
fonte
Atualmente, você está confinado à natureza vinculada ao contêiner do uso de scripts nos documentos. Se você criar um novo script fora dos documentos, poderá exportar informações para uma planilha do Google e usá-las como uma ferramenta de registro.
Por exemplo, no seu primeiro bloco de código
Quando estou trabalhando com o GAS, tenho dois monitores (você pode usar duas janelas) configurados com um contendo o ambiente GAS e o outro com o SS, para que eu possa gravar e registrar informações.
fonte
O console de desenvolvimento registrará erros gerados pelo script do aplicativo, para que você possa gerar um erro para registrá-lo como um console.log normal. Ele interromperá a execução, mas ainda poderá ser útil para a depuração passo a passo.
aparecerá no console da mesma forma que
console.log('hello world')
fonte
basta depurar o código da planilha assim:
mostra assim:
fonte
onEdit
)