L'objet d'événement de onSubmit est vide dans le script Google

Sep 23 2020

J'ai un formulaire Google lié à une feuille Google. Dans cette feuille de calcul, j'ai du code contenant ceci

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

Le déclencheur est configuré comme suit

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

Ainsi, chaque fois que je soumets le formulaire, le journal montre

[object Object]
Call onSubmit

Le formulaire comporte de nombreuses questions, pas un formulaire vide. En lisant la documentation, il semble que l'objet événement contienne de nombreuses informations. Y a-t-il un problème avec ma configuration? J'ai eu recours à la lecture des réponses dans les fiches techniques mais ce n'est pas idéal. Trop de choses doivent être appelées et / ou définies manuellement.

Réponses

1 TheMaster Sep 23 2020 at 19:34

L'enregistreur est bogué et il n'est pas recommandé de se fier directement à ce que vous voyez dans le débogueur.

Les meilleures pratiques:

  • Utilisez toujours la consoleclasse au lieu deLogger

  • Toujours JSON.stringify()tout ce que vous allez enregistrer:

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

Le dernier devrait résoudre votre problème. [object Object]est le résultat de l'appel toString()à un objet, car l'enregistreur est incapable d'afficher directement un objet.

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

Contrairement à la plupart des débogueurs de navigateur, le journal de script des applications Google ne stockera que les valeurs de chaîne de base. Dans la plupart des cas, cela signifie que la documentation sera plus utile pour comprendre des valeurs complexes. Dans votre cas, l' objet événement pour les événements de soumission est assez simple, avec une valuesclé pour un tableau simple et une namedValuesclé pour une recherche d'objet de ce qui a été soumis.