Comment faire pour extraire des éléments de réponse à partir d'un Formulaire de Google
J'ai fait un formulaire de capture des données 2.
- Adresse e-mail.
- Groupe de l'utilisateur qui veut s'abonner à.
Chaque groupe a sa propre feuille de calcul. [Selon le posté code, chacun a leurs propres feuille au sein de la même feuille de calcul.]
Lorsqu'un utilisateur soumet le formulaire, le formulaire doit saisir l'adresse e-mail, et envoie les données à la feuille de calcul de l'utilisateur abonné.
C'est ce que j'ai fait jusqu'à présent. Je suis coincé..
Est-il un moyen de récupérer des données à partir d'une zone de texte/options etc..?
Le seul moyen que je connaisse est de boucler toutes les données et de les récupérer 1 par 1.. et c'est difficile pour moi de liaison de données 2 ensemble... par exemple: "[email protected]" subscribed to "Group 1"
function onFormSubmit() {
var form = FormApp.getActiveForm();
var formResponses = form.getResponses();
for (var i = 0; i < formResponses.length; i++) {
var formResponse = formResponses[i];
var itemResponses = formResponse.getItemResponses();
for (var j = 0; j < itemResponses.length; j++) {
var itemResponse = itemResponses[j];
//Checks if it is multiple choice option
if (itemResponse.getItem().getType() == FormApp.ItemType.MULTIPLE_CHOICE) {
//If user chooses group 1, open spreadsheet and store user's email in 1st column
if (itemResponse.getResponse() == "1") {
var ss = SpreadsheetApp.openById("id goes here");
var sheet = ss.getSheetByName("Group subscription email");
}
}
}
}
}
Vous devez vous connecter pour publier un commentaire.
Oui, et il va vous simplifier la tâche. La documentation pertinente est Les Objets D'Événements.
Votre fonction de déclenchement sera fourni avec un objet d'événement quand il est déclenché. Dans votre cas, un formulaire de soumission de formulaire de l'événement, l'événement comprend une FormResponse objet, accessible par le
response
attribut. Pas besoin de boucle à l'aide des réponses, ou ouvrez le formulaire.Puisque l'on peut obtenir l'e-mail et le groupe à partir d'une seule réponse, concernant les deux devient trivial. Vous verrez une fonction d'assistance utilisées pour obtenir une poignée sur la fiche adéquate pour ajouter un abonnement.
Approche Simple - toutes les réponses nécessaires
Aussi longtemps que vos questions sont nécessaire, le tableau retourné par
getItemResponses()
contiendra l'élément de réponses dans l'ordre où ils apparaissent dans le formulaire.Adaptable approche #1 - élément index
Sachant que tous les éléments étaient présents a fait faire des choses simples, mais nous ne pouvons pas toujours compter sur cela. Si il y a une chance que des éléments de réponse pourraient être laissé en blanc, nous aurons besoin d'obtenir des réponses précises.
Il ya quelques façons de le faire. Nous allons nous intéresser à deux. Tout d'abord, l'utilisation de l'élément d'index:
Adaptable approche #2 - élément de titres (texte de la question)
De l'utilisation d'index nous a libérés de l'obligation que toutes les réponses seront fournies, mais il est encore fragile; il exigera des efforts de maintenance si le formulaire a été modifié afin d'assurer l'index de rester alignés.
Une amélioration que nous pouvons utiliser est d'utiliser le texte des questions pour choisir nos réponses. Nous allons encore prudent si des questions sont reformulés - mais cette approche est résiliente aux changements dans l'ordre ou des questions ou de l'ajout de la non-question des éléments tels que des images, des pauses, des vidéos, ou les en-têtes.
You do not have permission to call Form.getResponses
?