Tenho um script que pega a entrada de uma conexão JDBC e a grava em uma planilha. Há momentos em que o resultado dessa operação não é o esperado, então espalhei código como este em pontos-chave do script:
Logger.log("Trying to delete rows, received: "
+ e.message) ;
Logger.log(" Continuing.") ;
Quando executo esse código a partir do botão RUN do editor de script, consigo ver o log de execução mais recente sem esforço - está bem ali na minha frente. Mas quando executo o mesmo código a partir de um menu criado assim:
function onOpen() {
var menuItems ;
var spreadsheet = SpreadsheetApp.getActive();
var user = Session.getEffectiveUser().getEmail() ;
var validUsers = [ validUsersList ]
if (spreadsheet.getDataRange().canEdit()) {
menuItems = [
{name: 'Process all streams' , functionName: 'processAllStreams'}
, {name: 'Build covered artists' , functionName: 'rebuildCoversSheet'}
//, {name: 'Add to song list' , functionName: 'buildSongList'}
//, {name: 'Process selective streams' , functionName: 'processStreams'}
//, {name: 'Move suggestions to top' , functionName: 'moveSuggestionsToTop'}
, {name: 'Go to bottom' , functionName: 'showBottomRange'}
, {name: 'New livestream details' , functionName: 'getNewLivestreamDetails'}
];
spreadsheet.addMenu('Process it', menuItems);
etc.
Quando executado a partir desse menu, não vejo o log. Fui ao editor e verifiquei lá; ele não parece saber sobre scripts que foram executados fora do ambiente de desenvolvimento.
O que devo fazer para ver esses logs? Percebi que há uma opção de registro em nuvem, mas parece que não é uma configuração tão simples. E os documentos não dizem nada sobre as limitações de execução de scripts via menu ou via editor de scripts. A documentação menciona algumas limitações:
These logs are intended for simple checks during development and debugging, and do not persist very long.
Mas eles não parecem abordar essa questão. Existem abordagens fáceis?
A propósito, executar a partir do editor de script não é uma opção para algumas das coisas que estão sendo feitas. O motivo é que há prompts e diálogos (getUi.prompt() etc) envolvidos, e eles não são permitidos a partir do modo Editor de Script. Então, no momento, é um problema.
EDIT - adicionado um script testável
O código a seguir:
function onOpen() {
var menuItems = [
{ name: 'Make a log entry', functionName: 'makeEntry' }
];
SpreadsheetApp.getActive().addMenu('Process it', menuItems);
}
function makeEntry() {
Logger.log('here you go....') ;
}
Se você criar uma nova Planilha Google e adicionar este código ao editor de script:
Ao executar o script no editor de scripts, você verá a entrada de log criada.
Ao executar o script do menu criado ("Processar"), não consigo encontrar essa entrada de log.
Como mencionei nos comentários, você está executando a função programaticamente com o Menu Personalizado , por isso ela não está aparecendo no log de execução superior direito.
Aqui está uma explicação simples sobre isso:
Se você executar a função manualmente, poderá acessar o
execution log
no canto superior direito do App Script.Como você está executando a função programaticamente usando
Custom Menu
, o histórico do log de execução pode ser acessado no lado esquerdo do App Script.O gatilho onOpen() é executado automaticamente quando um usuário abre uma planilha, um documento ou uma apresentação e normalmente é usado para adicionar opções de menu personalizadas a esses aplicativos do Google Workspace (assim como ao Forms).
Referências: