Skip to content

Instantly share code, notes, and snippets.

@Max-Makhrov
Last active February 20, 2024 07:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Max-Makhrov/1f22aa2534dea93439fc0559b6ca1d67 to your computer and use it in GitHub Desktop.
Save Max-Makhrov/1f22aa2534dea93439fc0559b6ca1d67 to your computer and use it in GitHub Desktop.
Google Forms Script. Sample script on form submit. Get responses.
// gentleman script for google forms
//
// gets submitted valus:
// 1. question label
// 2. question id
// 3. response value
//
// ⚠️ This is Form trigger.
// Open script editor from form interface
// Install it wia Triggers
// gentleman script for google forms
//
// gets submitted valus:
// 1. question label
// 2. question id
// 3. response value
//
// ⚠️ This is Form trigger.
// Open script editor from form interface
// Install it wia Triggers
function onFormSubmit(e) {
/** @type {FormApp.FormResponse} */
const formResponse = e.response;
/** @type {Array<FormApp.ItemResponse>} */
const itemResponses = formResponse.getItemResponses();
const respondentEmail = formResponse.getRespondentEmail();
let response = {}, responses = [], item;
for (var i = 0; i < itemResponses.length; i++) {
item = itemResponses[i].getItem();
response = {
id: item.getId(),
label: item.getTitle(),
value: itemResponses[i].getResponse()
}
responses.push(response);
}
const json = JSON.stringify({respondentEmail, responses}, null, 2);
MailApp.sendEmail(
"TEST.TEST@gmail.com",
"New form response",
'',
{htmlBody: "<pre>" + json + "</pre>"}
);
}
var formSubmitOptions = {
idColumnNum: 1,
memoryKey: 'theLastFormId' // any string
}
/**
* ⚠️ This is a Spreadsheet trigger
* Open script editor from Spreadsheet
* Install it wia Triggers
* Trigger will add next ID to the form entry
*
*/
// function test_onFormSubmit() {
// var event = {
// range: SpreadsheetApp
// .getActive()
// .getSheetByName('Form Responces')
// .getRange('A2')
// }
// onFormSubmit(event);
// }
function onFormSubmit(event) {
// https://developers.google.com/apps-script/guides/triggers/events
// var namedValues = event.namedValues;
// var values = event.velues;
var range = event.range;
var nextId = getNextId_();
var row = range.getRow();
var column = formSubmitOptions.idColumnNum;
var sheet = range.getSheet();
var range2 = sheet.getRange(row, column);
range2.setValue(nextId);
console.log('Addad ID = ' + nextId + ' to range ' + range2.getA1Notation());
}
/** get next ID and writing it to Properties */
var getNextId_ = function() {
// use lock to prevent same IDs
var lock = LockService.getScriptLock();
var memoryKey = formSubmitOptions.memoryKey; // any
var memory = PropertiesService.getScriptProperties();
var currentId = memory.getProperty(memoryKey);
if (currentId == null) {
currentId = 0;
}
currentId = parseInt(currentId);
var nextId = currentId + 1;
memory.setProperty(memoryKey, nextId);
lock.releaseLock();
return nextId;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment