Last active
February 20, 2024 07:07
-
-
Save Max-Makhrov/1f22aa2534dea93439fc0559b6ca1d67 to your computer and use it in GitHub Desktop.
Google Forms Script. Sample script on form submit. Get responses.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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( | |
"[email protected]", | |
"New form response", | |
'', | |
{htmlBody: "<pre>" + json + "</pre>"} | |
); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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