Google apps script 谷歌文档电子表格,发送电子邮件和订单值

Google apps script 谷歌文档电子表格,发送电子邮件和订单值,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我使用google docs电子表格创建了一个表单,并创建了一个脚本,在用户填写表单时发送电子邮件: function sendFormByEmail(e){ var email = "AAA"; var subject = "XXX"; var message = ""; for(var field in e.namedValues) message += field + ' = '+ e.namedValues[fiel

我使用google docs电子表格创建了一个表单,并创建了一个脚本,在用户填写表单时发送电子邮件:

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); } 函数sendFormByEmail(e){ var email=“AAA”; var subject=“XXX”; var message=“”; for(e.NamedValue中的var字段) message+=field+'='+e.NamedValue[field].toString()+“\n\n”; var advancedags={replyTo:e.namedvalue['e-mail'].toString()}; 发送电子邮件(电子邮件、主题、消息、优点); } 剧本很有效, 但当它发送电子邮件时,数据不会按表单的字段排序


如何修改脚本以对值进行排序​​由于它们在电子表格(表单)中,您可以从电子表格中获取列顺序。大概是这样的:

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,您可以在脚本库及其中找到它。

小心,列顺序可能与字段顺序不同,特别是在编辑表单和添加和删除字段之后。同意,但在这种情况下,只需转到电子表格并按所需顺序对列进行排序即可。由于Google Forms没有API,所以了解实际顺序的唯一方法是分析html。等等,你不能更改列的顺序,表单将继续在相同的位置上写入答案,字段将混合。这不是真的,你测试过吗?我不记得我测试过它,但在谷歌文档帮助的最后一段中有一个警告,(…in…)的javascript以任意顺序执行。其文件建议,如果订单相关,不要使用它。