Это код, который я использую для перетаскивания текущего набора ответов в объект, поэтому наиболее актуальным ответом на вопрос «Ваше имя» становится form.yourName, который, как я обнаружил, является самым простым способом поиска ответов на вопрос:
function objectifyForm() {
//Makes the form info into an object
var myform = FormApp.getActiveForm();
var formResponses = myform.getResponses()
var currentResponse = formResponses[formResponses.length-1];
var responseArray = currentResponse.getItemResponses()
var form = {};
form.user = currentResponse.getRespondentEmail(); //requires collect email addresses to be turned on or is undefined.
form.timestamp = currentResponse.getTimestamp();
form.formName = myform.getTitle();
for (var i = 0; i < responseArray.length; i++){
var response = responseArray[i].getResponse();
var item = responseArray[i].getItem().getTitle();
var item = camelize(item);
form[item] = response;
}
return form;
}
function camelize(str) {
str = str.replace(/[\.,-\/#!$%\^&\*;:{}=\-_`~()@\+\?><\[\]\+]/g, '')
return str.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function(match, index) {
if (+match === 0) return ""; // or if (/\s+/.test(match)) for white spaces
return index == 0 ? match.toLowerCase() : match.toUpperCase();
});
}
//Use with installable trigger
function onSubmittedForm() {
var form = objectifyForm();
Logger.log(form);
//Put Code here
}
Пара важных вещей.
- Если вы измените вопрос в форме, вам потребуется обновить код
- Не обязательные вопросы могут или могут бытьне иметь ответов, поэтому проверьте, существует ли ответ, прежде чем использовать его
- Я использую только устанавливаемые триггеры, поэтому я знаю, что он работает с ними.Не уверен насчет простых триггеров
- Вы можете увидеть объект формы, открыв логи, что полезно для поиска имен объектов