我制作了一个Google表单和一个脚本,用于发送包含表单内容的邮件。
有3个字段:A,B,C不是强制性的。 示例:如果我们输入1,5和8,则脚本正在编写:
A = 1,B = 5,C = 8
问题是如果B没有给出一个值(A为1,C为3),那么我得到输出:
A = 1,B = 3,C =
值有变化! 我该怎么办?
function sendResponses() {
var form = FormApp.getActiveForm();
var responses = form.getResponses();
var lastrow = responses.length - 1;
var itemResponses = responses[lastrow].getItemResponses();
var Total = "A=" + itemResponses[0].getResponse() + ", B=" + itemResponses[1].getResponse() + ", C=" + itemResponses[2].getResponse(),
}
谢谢你, 弗雷德里克
答案 0 :(得分:0)
使用命名值而不是索引获取响应......不会出现任何可能的混淆。
您可以使用FormApp method getTitle()
检索项目名称示例:
e.namedValues {'First Name': ['Jane'], 'Timestamp': ['6/7/2015 20:54:13'], 'Last Name': ['Doe']} An object containing the question names and values from the form submission
答案 1 :(得分:0)
当我使用此代码时,它会向我提供您想要的结果:
function sendResponses(e) {
var thisResponse = e.response;
Logger.log('thisResponse: ' + thisResponse);
var itemResponses = thisResponse.getItemResponses();
Logger.log('itemResponses: ' + itemResponses);
var Total = "A=" + itemResponses[0].getResponse() + ", B=" + itemResponses[1].getResponse() + ", C=" + itemResponses[2].getResponse();
Logger.log('Total: ' + Total);
}
请注意,您无需获取所有表单回复。您的代码会检索过去和现在的所有回复。您只需获得当前的响应即可。请注意变量 e 作为sendResponses函数中的参数:
function sendResponses(e) {
我创建了一个包含三个文本字段的表单,并没有在第二个字段中放置任何内容。日志打印出来:
[14-09-10 16:25:44:265 EDT] thisResponse:FormResponse
[14-09-10 16:25:44:267 EDT] itemResponses: ItemResponse,ItemResponse,ItemResponse
[14-09-10 16:25:44:268 EDT]总计:A = 1,B =,C = C
提交表单时会触发该功能: