web-dev-qa-db-fra.com

Comment obtenir des valeurs de formulaire dans le gestionnaire d'événements de soumission?

J'essaie de commencer avec un formulaire Google très simple contenant seulement quelques questions (un choix multiple avec seulement 2 options et un court texte). Après l'avoir créé, j'ai ouvert l'éditeur de script et tapé

function onSubmit(e) {
  Logger.log("onSubmit(%s)", JSON.stringify(e));
}

et configuré onSubmit en tant que gestionnaire pour le déclencheur "form submit" en utilisant les "Déclencheurs du projet en cours" dans le menu "Edition".

En remplissant le formulaire et en le soumettant maintenant, le gestionnaire est appelé, mais je ne vois cela que dans le journal:

[17-04-15 18:56:23:584 CEST] onSubmit({"response":{},"source":{},"authMode":{},"triggerUid":1870249629})

c'est-à-dire que le champ de réponse est vide. J'ai également essayé d'utiliser FormApp.getActiveForm().getResponses(), mais il retourne également un tableau de plusieurs objets vides (OTOH, FormApp.getActiveForm().getTitle() renvoie le titre que j'ai donné au formulaire).

Je soupçonne que je dois donner au script des autorisations supplémentaires pour accéder aux données du formulaire, mais je ne sais pas comment le faire, ni même si c'est vraiment le problème.

Quelqu'un sait-il pourquoi je n'obtiens pas les valeurs du formulaire et que dois-je faire pour les obtenir? Merci d'avance!

13
VZ.

Il existe 2 modèles pour récupérer les valeurs soumises. Pour les deux modèles, la fonction de récupération des valeurs de la soumission du formulaire doit être installée comme déclencheur. Les informations détaillées des déclencheurs installables sont https://developers.google.com/apps-script/guides/triggers/installable .

1. Le script est ouvert sur une feuille de calcul.

Dans ce cas, en installant un déclencheur, vous pouvez récupérer les valeurs soumises par votre script. Les informations détaillées des objets d'événement sont https://developers.google.com/apps-script/guides/triggers/events#form-submit .

Script:

function onSubmit(e){
  Logger.log("%s", JSON.stringify(e));
}

Résultat:

{
  "values": [
    "date and time",
    "test"
  ],
  "namedValues": {
    "fromtestform": [
      "test"
    ],
    "timeStamp": [
      "date and time"
    ]
  },
  "range": {
    "columnStart": 1,
    "rowStart": 2,
    "rowEnd": 2,
    "columnEnd": 2
  },
  "source": {},
  "authMode": {},
  "triggerUid": #####
}

2. Le script est ouvert sur le formulaire.

Dans ce cas, les valeurs soumises peuvent être récupérées par le script suivant. Les informations détaillées sont https://developers.google.com/apps-script/reference/forms/form-response .

Script:

function onSubmit(e){
  Logger.log("authMode=%s, source.getId()=%s", e.authMode, e.source.getId());
  var items = e.response.getItemResponses();
  for (i in items){
    Logger.log("getItem().getTitle()=%s, getResponse()=%s", items[i].getItem().getTitle(), items[i].getResponse());
  }
}

Résultat:

authMode=FULL, source.getId()=### form ID ###
getItem().getTitle()=## item's title ##, getResponse()=test

Si je comprends mal votre question, je suis désolé.

22
Tanaike