Google Apps脚本通过邮件发送错误的表单输入

问题描述:

我对编码非常陌生,并且在我的小Google Apps脚本中遇到以下问题。Google Apps脚本通过邮件发送错误的表单输入

有谁能告诉我为什么下面的脚本不会发送给我/用户(我只使用表单和此脚本)我最新的表单响应的具体答案?它在某种程度上总是把我与我使用这个脚本在第一时间回应表格的答案...

function sendAnswerViaMail() { 

    var myEmail = Session.getEffectiveUser().getEmail(); 
    var subject = 'My answer to the 26th question.'; 
    var form = FormApp.getActiveForm(); 
    var formResponses = form.getResponses(); 
    var formResponse = formResponses[formResponses.length-1]; 
    var itemResponses = formResponse.getItemResponses(); 
    var itemResponse = itemResponses[25]; 
    MailApp.sendEmail (myEmail, subject, itemResponse.getResponse()); 

}  

我想,当用户通过触发functionnality提交表单脚本被触发。
你在这里的方法是更多的逻辑之一,但不幸的是它不是很好的方法,因为它不能处理这样的事实,即2人可能几乎在同一时间回答你的表格,并且启动脚本的触发器与事实不相关您的脚本已记录的答案,您可以与访问:

var form = FormApp.getActiveForm(); 
var formResponses = form.getResponses(); 

而是这种方法推出的时候,我可以建议你使用的形式触发提交的对象将给予你的函数:

/** 
* function triggered each time the form is submited 
* 
*/ 
function submitFormFunc(e) { 
    var user = e.response.getRespondentEmail(); 
    var items = e.response.getItemResponses(); 

    var responses={}; // given responses form the user 
    var respObj = {}; 
    for(var i = 0; i< items.length; i++) { 
    var it = items[i]; 
    responses[it.getItem().getId()] = { 
     "title":it.getItem().getTitle(), 
     "response":it.getResponse() 
    }; 
    respObj[it.getItem().getTitle()] = it.getResponse(); 
    } 
    Logger.log("responses: "+JSON.stringify(responses)); 
}