Afficher l'URL utilisée pour modifier les réponses d'un formulaire Google dans une feuille de calcul Google à l'aide d'un script

11

J'essaie de faire en sorte que l'URL de modification d'un formulaire Google soit automatiquement remplie dans la feuille de réponse Google à laquelle elle est jointe. J'ai déjà vu cela et je veux l'utiliser, mais j'ai des problèmes pour essayer de savoir où placer exactement le script.

J'ai essayé de le mettre dans l'éditeur de script dans la feuille de calcul Google dans laquelle j'aimerais que l'URL apparaisse, mais je ne sais pas où aller à partir de là. Dans l'éditeur de script, j'ai essayé de le tester en tant que module complémentaire, mais cela n'a pas fonctionné.

J'ai peu d'expérience avec les scripts et l'éditeur de script dans Google Sheets. Enfin, j'utilise un autre module complémentaire appelé AutoCrat dans la même feuille de calcul Google.

pseudos
la source
Outre le lien vers la source du code que vous avez bien essayé d'inclure le code et les étapes suivies pour faire vos tests.
Rubén

Réponses:

16

Réponse courte

Le lien pointe vers un Q & A qui a deux réponses, mais aucun d'eux ne me semble approprié. IE, le code de l'une des réponses est incomplet et les deux envoient des e-mails, donc l'adoption est trop complexe pour être utilisée comme point de départ.

Vous trouverez ci-dessous un script plus facile à adopter.

Instructions

  1. Créez un formulaire de test et notez l' ID du formulaire (entre ../d/et /editdans l'url). Nouvelle forme

  2. Définissez le formulaire pour envoyer des réponses à une nouvelle feuille de calcul. Connecter une feuille de calcul

  3. Vous serez redirigé vers la nouvelle feuille de calcul. Notez le nom de la feuille active (renommez-le si vous le souhaitez) et ajoutez un en- tête à la colonne à utiliser pour contenir les URL de modification des réponses, c'est-à-dire Edit Url. REMARQUE: La capitalisation est très importante, alors soyez très prudent sur la façon de l'écrire. Feuille de calcul des réponses

  4. Accédez à Tools > Script editorpour ajouter un projet de script Google Apps lié à la feuille de calcul. Scripts de feuille de calcul

  5. Remplacez le code par défaut par le code ci-dessous (pensez à éditer les variables globales selon votre cas). Code de script

  6. Enregistrez le projet, puis ajoutez un déclencheur de sommet de formulaire installable (si vous obtenez une boîte de dialogue "Autorisation requise", cliquez sur "Vérifier les autorisations" puis sur "Autoriser"). Déclencheur d'envoi de formulaire

  7. Soumettez quelques exemples de réponses pour tester la solution.

Code

/*
 * Global Variables
 */

// Form URL
var formURL = 'https://docs.google.com/forms/d/form-id/viewform';
// Sheet name used as destination of the form responses
var sheetName = 'Form Responses 1';
/*
 * Name of the column to be used to hold the response edit URLs 
 * It should match exactly the header of the related column, 
 * otherwise it will do nothing.
 */
var columnName = 'Edit Url' ;
// Responses starting row
var startRow = 2;

function getEditResponseUrls(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); 
  var columnIndex = headers[0].indexOf(columnName);
  var data = sheet.getDataRange().getValues();
  var form = FormApp.openByUrl(formURL);
  for(var i = startRow-1; i < data.length; i++) {
    if(data[i][0] != '' && data[i][columnIndex] == '') {
      var timestamp = data[i][0];
      var formSubmitted = form.getResponses(timestamp);
      if(formSubmitted.length < 1) continue;
      var editResponseUrl = formSubmitted[0].getEditResponseUrl();
      sheet.getRange(i+1, columnIndex+1).setValue(editResponseUrl);
    }
  }
}

Ressources supplémentaires

J'ai créé un résumé avec le contenu de la question et de la réponse. ce b / c j'explore des façons de mieux collaborer entre les utilisateurs finaux qui écrivent du code.

Rubén
la source
1
Je l'ai eu, c'était le nom de la feuille, et j'ai sorti '/ viewform' à la fin de l'URL. Merci beaucoup!
pseudos
1
@ Rubén - J'ai pris la liberté d'ajouter un peu plus de détails à votre excellent tutoriel, car j'ai eu du mal avec quelques étapes lorsque je l'ai suivi moi-même.
Sphinxxx
1
D'accord. La principale raison pour laquelle j'ai changé le code était de montrer que vous pouvez utiliser FormApp.openById()uniquement l'ID du formulaire au lieu de FormApp.openByUrl()l'URL entière, au cas où le format d'URL de Google changerait à l'avenir. Je vais laisser un commentaire sur votre essence à la place.
Sphinxxx
3
Dans ma fenêtre de script Google, les "déclencheurs du projet actuel" étaient sous "Modifier".
dvb
1
@HoangTrinh Voir canEditResponse ()
Rubén