2012-03-22 124 views
0

我创建了使用谷歌文档电子表格形式,并创建了发送电子邮件时,用户填写表单的脚本:谷歌文档电子表格,发送电子邮件和订单值

 
function sendFormByEmail(e){ 

     var email = "AAA"; 
     var subject = "XXX"; 
     var message = ""; 
     for(var field in e.namedValues) 
     message += field + ' = '+ e.namedValues[field].toString() + "\n\n"; 

     var advancedArgs = {replyTo:e.namedValues['E-mail'].toString()}; 
     MailApp.sendEmail(email, subject, message, advancedArgs); 


} 

剧本的作品, 但是当它发送电子邮件,数据不会被排序为表单的字段。

我该如何修改我的脚本来排序电子表格(表单)中的值?

+0

JavaScript的for(... in ...)以任意顺序执行。其文档建议如果订单相关,不要使用它。 – 2012-03-27 14:38:38

回答

1

您可以从电子表格中获取列顺序。例如:

function sendFormByEmail(e){ 

     var email = "AAA"; 
     var subject = "XXX"; 
     var message = ""; 
     var s = SpreadsheetApp.getActive().getSheetByName("Sheet1"); 
     var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0]; 
     for(var i in headers) 
     message += headers[i] + ' = '+ e.namedValues[headers[i]].toString() + "\n\n"; 

     var advancedArgs = {replyTo:e.namedValues['E-mail'].toString()}; 
     MailApp.sendEmail(email, subject, message, advancedArgs); 
} 

当然,您必须将工作表名称Sheet1更改为您的实际工作表名称。顺便说一下,我已经写了一个脚本,可以做更多的事情,也许你想检查一下(如果这不仅仅是一个编程练习)。它被称为FormEmailer,你可以在脚本库和它的site中找到它。

+0

请注意,列顺序可能与字段顺序不同,特别是在编辑窗体并添加和删除字段之后。 – 2012-03-27 14:35:49

+0

同意,但在这种情况下,只需转到电子表格并按所需顺序对列进行排序即可。由于Google表单没有API,因此了解实际订单的唯一方法就是分析html。 – 2012-03-28 12:28:48

+0

等待,您不能更改列的顺序,表单将继续在相同的位置上编写答案,并且您将会混合字段。 – 2012-04-02 04:10:08