Вы можете попробовать приведенный выше код, чтобы получить уникальный идентификатор ответа формы. Но это не отсортированные числа (1,2, ...). Это уникальное случайное число, генерируемое формой. мой совет - не пытаться создать что-то, начиная с 1, и идти дальше, так как у вас нет безопасности, чтобы иметь отсортированный список элементов. см. here для деталей.
/**
* for a form with 2 question named "question 1" and "question 2"
* this function need to be associated directly to the form
* and it need to be associated to a trigger "on form submit"
* the "e" given as argument is generated by the form submit trigger
*/
function submitFormFunc(e) {
var items = e.response.getItemResponses();
var responses={};
for(var i = 0; i< items.length; i++) {
responses[items[i].getItem().getTitle()]=items[i].getResponse();
}
var responseTable = [];
var responseIndex = ["Timestamp","ID","question 1","question 2"];
responseTable.push(e.response.getTimestamp().toString());
responseTable.push(e.response.getId());
responseTable.push(responses["question 1"]); // my form have 2 questions named "question 1" and "question 2"
responseTable.push(responses["question 2"]);
responseTable.push(FormApp.getActiveForm().getResponse(e.response.getId()).getEditResponseUrl());
SpreadsheetApp.openById("YOUR_SPREADSHEET_ID").appendRow(responseTable);
}
--EDIT--
, если Вы хотите что-то короче, вы можете использовать штамп времени:
изменения (или добавить) responseTable.push(e.response.getTimestamp().toString());
для
responseTable.push(e.response.getTimestamp().getTime().toString());
или даже короче, но немного менее эффективно:
Вы можете добавить строку:
responseTable.push(generateUnique());
и добавить функцию:
function generateUnique(){
var vals = SpreadsheetApp.openById("YOUR_SPREADSHEET_ID").getRange("A:A").getValues();
var ids=[];
for(var i in vals){
ids.push(vals[0]);
}
var newId = Math.floor(Math.random()*100); // change 100 for something bigger if needed
while(ids.indexOf(newId)>-1){
newId = Math.floor(Math.random()*100);
}
Logger.log(newId);
return(newId);
}
, какой уникальный номер вы хотите, чтобы отправить его обратно? вы можете отправить ему уникальный идентификатор ответа формы или, например, MD5 его адреса электронной почты: в сценарии Amit Agarwal заменить: message = «Мы получили ваши данные.
Спасибо!
Ваш уникальный идентификатор:« + Утилиты. base64Encode (Utilities.computeDigest (Utilities.DigestAlgorithm.MD5, e.namedValues ["Адрес электронной почты"]. toString())); – Harold
Я хочу отправить пользователям уникальный идентификатор ответа формы. Лучше начать с 1 и пойти после этого с другими номерами ... Но также мне нужно получить этот номер самостоятельно и поместить его в таблицу, которая автоматически создается для моей формы диска. – Muhahaha