O objeto de evento de onSubmit está vazio no script do Google

Sep 23 2020

Tenho um formulário do Google vinculado a uma planilha do Google. Nessa planilha, tenho um código que contém este

function onSubmit(e){
  Logger.log(e)    
  Logger.log("Call onSubmit")
}

O gatilho é configurado como segue

Project: Spreadsheet's scritp 
Deployment:Head 
Event:From spreadsheet - On form submit 
Function:onSubmit

Então, sempre que eu envio o formulário, o log mostra

[object Object]
Call onSubmit

O formulário tem muitas perguntas, não um formulário vazio. Ao ler a documentação, parece que o objeto de evento contém muitas informações. Há algo errado com minha configuração? Recorri à leitura das respostas nas folhas de dados, mas isso não é o ideal. Muitas coisas precisam ser chamadas e / ou definidas manualmente.

Respostas

1 TheMaster Sep 23 2020 at 19:34

O logger tem bugs e não é recomendado confiar diretamente no que você vê no depurador.

Melhores Práticas:

  • Sempre use consoleclasse em vez deLogger

  • Sempre JSON.stringify()tudo o que você vai registrar:

    console.log(JSON.stringify(e));
    

O último deve resolver seu problema. [object Object]é o resultado de chamar toString()um objeto, pois o logger é incapaz de exibir um objeto diretamente.

const obj = {a:1};
console.log(obj.toString());//[object Object]
console.log(JSON.stringify(obj));//'{"a":1}'

1 ThatComputerGuy Sep 23 2020 at 19:15

Ao contrário da maioria dos depuradores de navegador, o logger de scripts do Google Apps armazenará apenas valores de string básicos. Na maioria dos casos, isso significa que a documentação será mais útil para a compreensão de valores complexos. No seu caso, o objeto de evento para enviar eventos é bastante simples, com uma valueschave para um array simples e uma namedValueschave para uma pesquisa de objeto do que foi enviado.