web-dev-qa-db-fra.com

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

J'essaie de faire en sorte que l'URL de modification d'un formulaire Google figure automatiquement dans la réponse de la feuille Google à laquelle il est attaché. J'ai déjà vu this et je veux l'utiliser, mais je ne parviens pas à trouver exactement où mettre le script.

J'ai essayé de l'insérer dans l'éditeur de script de la feuille de calcul Google dans laquelle j'aimerais que l'URL apparaisse, mais je ne suis pas sûr de savoir où aller à partir de là. Dans l'éditeur de script, j'ai essayé de le tester en tant qu'add-on, mais cela n'a pas fonctionné.

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

10
nicks

Réponse courte

Le lien indique un Q & A qui a deux réponses mais aucune d’entre elles ne me semble appropriée. C'EST À DIRE. le code de l'une des réponses est incomplet et les deux envoient des courriels; l'adoption est donc 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 de formulaire (entre ../d/ et /edit dans l'URL). New form

  2. Définissez le formulaire pour envoyer les réponses à une nouvelle feuille de calcul. Connect a spreadsheet

  3. Vous serez redirigé vers la nouvelle feuille de calcul. Notez le nom de la feuille active (renommez-la si vous le souhaitez) et ajoutez un en-tête à la colonne à utiliser pour contenir les URL d'édition de la réponse, c'est-à-dire Edit Url. NOTE: La capitalisation est très importante, alors soyez très prudent dans sa rédaction. Responses spreadsheet

  4. Accédez à Tools > Script editor pour ajouter un projet de script Google Apps lié à la feuille de calcul. Spreadsheet scripts

  5. Remplacez le code par défaut par le code ci-dessous (n'oubliez pas de modifier les variables globales en fonction de votre cas). Script code

  6. Enregistrez le projet, puis ajoutez un déclencheur de sommet de formulaire installable (si vous obtenez un dialogue "Autorisation requise", cliquez sur "Vérifier les autorisations" puis sur "Autoriser"). Form submit trigger

  7. Soumettez des 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 additionnelles

J'ai créé un Gist avec le contenu de la question et la réponse. J'explore des moyens de mieux collaborer entre les utilisateurs finaux qui écrivent du code.

15
Rubén