Come collegare un modulo Google a un dato foglio Google in modo che ogni risposta al modulo entri direttamente nelle celle corrispondenti del foglio
Spero di aver capito bene la domanda. Ecco le istruzioni per creare un foglio ben strutturato per ogni nuova risposta del modulo di Google - cioè ogni risposta dal modulo avrà il proprio foglio nel foglio di calcolo con le risposte alle singole domande disposte secondo un modello.
- Imposta la destinazione delle risposte per il tuo modulo di Google su un foglio di calcolo di Google (se non è già stato fatto).
- Apri il foglio di calcolo.
- Crea un foglio modello nel foglio di calcolo. Questo modello è il layout di come vuoi che appaia ogni risposta.
- Una volta che hai impostato il layout e la formattazione hai bisogno di collegare il modello a una singola risposta del modulo. Per ottenere questo suggerirei di usare la formula OFFSET().
- Ogni risposta del modulo appare nel foglio di calcolo lungo una singola riga nel foglio delle risposte del modulo.
- Sul foglio del modello in una cella nascosta (nascosta per motivi di ordine) scrivi il numero 1. Questo sarà il nostro riferimento di riga. Questo sarà il nostro riferimento di riga - così le formule nel modello sanno quale risposta del modulo visualizzare. (Per il resto di questa spiegazione assumerò che questo riferimento di riga sia nella cella A1 e che la riga 1 sia nascosta.)
- Utilizza la cella superiore di ogni colonna come ancora per la formula OFFSET(). Cioè per il primo argomento della formula OFFSET() seleziona la cella della riga 1 per la colonna corrispondente alla parte della risposta del modulo che deve andare in ogni posizione del modello.
- Esempio. La prima domanda di un modulo è "Nome". Pertanto, le risposte "Nome" appaiono nella colonna B nel foglio Risposte del modulo (la colonna A ha la marca temporale di invio). Quindi dove voglio che il "Nome" appaia nel mio Template dovrei usare 'Risposte modulo'!B1 come primo argomento per la formula OFFSET().
- Per l'argomento 2 in OFFSET() usa il riferimento alla riga che abbiamo definito sopra - puntalo alla cella A1.
- L'argomento 3 deve essere zero perché abbiamo solo bisogno di spostare il riferimento verticalmente verso il basso non orizzontalmente.
- Quindi la formula per "Nome" ora è:
=OFFSET('Risposte del modulo'!B1,A1,0). - Ripetere questa procedura per tutte le domande del modulo di risposta che devono apparire sul modello.
- Ora abbiamo bisogno di aggiungere uno script al foglio di calcolo che farà una nuova copia del foglio modello e aggiornerà il riferimento alla riga ogni volta che viene fatto un nuovo modulo di risposta.
- Si può fare da soli o usare il mio (sotto). Usa Script Editor, che si trova nel menu Strumenti. Scrivi il tuo script lì o copia il mio.
- Imposta lo script per attivarsi su un nuovo invio del modulo. Ha bisogno di un trigger installabile.
- In Script Editor apri il menu Edit e scegli Current Project's Triggers.
- Si apre una finestra di dialogo. C'è un link che dice, "Nessun trigger impostato. Clicca qui per aggiungerne uno ora". Clicca quel link.
- Per il campo Run seleziona la funzione che vuoi sia eseguita dal trigger. Se stai usando il mio script la funzione è "onFormSubmit".
- Per il campo Events seleziona "From Spreadsheet".
- Poi dal menu a tendina seleziona "On form submit".
- Finisci cliccando Save.
- Ora ogni volta che il Form viene inviato il Template sheet sarà duplicato e mostrerà la risposta del Form nel layout che hai specificato.
Ancora una volta, spero di aver capito bene la domanda, e spero che questa risposta sia d'aiuto.
Esempio di foglio e modulo Google con una semplice dimostrazione dell'impostazione di cui sopra disponibile qui (hai accesso ai commenti):
- Foglio di calcolo: Scripting per il test delle risposte del modulo (Risposte)
- Form: Scripting for Form Responses Test
Script to duplicate the template sheet and name it accordingly
- function onFormSubmit(){
- // SET THE SHEET NAMES AND CELL REFERENCES HERE //
- var ss = SpreadsheetApp.getActive();
- var formInputSheet = ss.getSheetByName('Form Input'); //change the name between the inverted commas if necessary
- var templateSheet = ss.getSheetByName('template'); //change the name between the inverted commas if necessary
- var rowOffsetCellLoc = 'A1' //cell reference for tracking row offset to insert into Template sheet
- var questionToUseForSheetName = 1; //which question in the form response should be used to name the sheet
- //======================== DON'T CHANGE ANYTHING BELOW HERE ====================================//
- templateSheet.activate();
- var rowOffset = templateSheet.getRange(rowOffsetCellLoc).getValue(); //get row reference for looking up the current form response
- templateSheet.getRange(rowOffsetCellLoc).setValue(rowOffset+1); //increment the row reference
- var response = formInputSheet.getRange(rowOffset+2, 1, 1, formInputSheet.getMaxColumns()).getValues()[0]; //get response data for this form submit
- var newSheetName = response[questionToUseForSheetName];
- var newSheet = ss.duplicateActiveSheet();
- newSheet.setName('response '+(rowOffset+1)); //rename new sheet to be "response 1", "response 2" etc
- }
Articoli simili
- Come nascondere le celle contenenti dati specifici nei fogli di Google a certi utenti che hanno accesso al foglio
- Qual è il modo per evitare che la polvere entri nel tuo PC?
- Qual è la più alta statistica di un Pokemon (qualsiasi statistica, ogni gen, ogni oggetto, ogni trasformazione, ogni abilità)?
- Come ordinare il mio foglio di calcolo Excel contenente celle unite