Mostra l'URL utilizzato per modificare le risposte da un modulo Google in un foglio di calcolo Google utilizzando uno script


11

Sto cercando di fare in modo che l'URL di modifica di un modulo Google venga automaticamente inserito nella risposta di Google Sheet a cui è allegato. Ho visto questo già e voglio usarlo, ma sto avendo problemi cercando di capire esattamente dove mettere lo script.

Ho provato a inserirlo nell'editor di script nel foglio di calcolo di Google in cui vorrei visualizzare l'URL, ma non sono sicuro di dove andare da lì. Nell'editor di script ho provato a testarlo come componente aggiuntivo ma non ha funzionato.

Ho poca esperienza con gli script e l'editor di script in Fogli Google. Come nota finale sto usando un altro componente aggiuntivo chiamato AutoCrat nello stesso foglio di calcolo di Google.


Oltre al link alla fonte del codice che hai provato bene includere il codice e i passaggi seguiti per fare i test.
Rubén,

Risposte:


16

Risposta breve

Il collegamento punta a una domanda e risposta che ha due risposte, ma nessuna di esse mi sembra appropriata. Cioè il codice di una delle risposte è incompleto ed entrambi inviano e-mail, quindi l'adozione è troppo complessa per essere utilizzata come punto di partenza.

Di seguito è riportato uno script che è più facile da adottare.

Istruzioni

  1. Creare un modulo di prova e annotare l' ID del modulo (tra ../d/e /editnell'URL). Nuova forma

  2. Imposta il modulo per inviare le risposte a un nuovo foglio di calcolo. Collega un foglio di calcolo

  3. Verrai reindirizzato al nuovo foglio di calcolo. Nota il nome del foglio attivo (rinominalo se lo desideri) e aggiungi un'intestazione alla colonna da utilizzare per contenere gli URL di modifica della risposta, ad es Edit Url. NOTA: la capitalizzazione è molto importante, quindi fai molta attenzione a come la scrivi. Foglio di calcolo delle risposte

  4. Vai a Tools > Script editorper aggiungere un progetto di script di Google Apps limitato al foglio di calcolo. Script per fogli di calcolo

  5. Sostituisci il codice predefinito con il codice seguente (ricorda di modificare le variabili globali in base al tuo caso). Codice script

  6. Salvare il progetto, quindi aggiungere un trigger summit per modulo installabile (se viene visualizzata la finestra di dialogo "Autorizzazione richiesta", fare clic su "Revisiona autorizzazioni" e quindi su "Consenti"). Attivazione invio modulo

  7. Invia alcune risposte di esempio per testare la soluzione.

Codice

/*
 * 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);
    }
  }
}

Risorse addizionali

Ho creato una sintesi con il contenuto della domanda e della risposta. questo b / c sto esplorando modi per collaborare meglio tra utenti finali che scrivono codice.


1
Ho capito, era il nome del foglio e ho estratto "/ viewform" alla fine dell'URL. Grazie mille!
prende il

1
@ Rubén - Mi sono preso la libertà di aggiungere un po 'più di dettagli al tuo fantastico tutorial, mentre facevo fatica a seguire alcuni passaggi quando l'ho seguito da solo.
Sphinxxx,

1
Ok. Il motivo principale per cui ho modificato il codice è stato quello di mostrare che è possibile utilizzare FormApp.openById()solo l'ID modulo anziché FormApp.openByUrl()l'intero URL, nel caso in cui il formato dell'URL di Google cambi in futuro. Lascio invece un commento sul tuo succo.
Sphinxxx,

3
Nella mia finestra di script di Google, "Trigger del progetto corrente" era sotto "Modifica".
DVB

1
@HoangTrinh Vedi canEditResponse ()
Rubén
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.