如何自定义Google表单提交邮件中响应字段的排序顺序?
解决Google表单提交邮件字段顺序问题
你当前代码用for-in循环遍历e.namedValues时,对象属性的遍历顺序是不确定的,所以邮件里的字段才会随机排序。要改成表单原有顺序或自定义排序很简单,直接用固定字段顺序数组来遍历即可:
方案1:按表单原有顺序输出
直接把你给出的表格字段顺序定义成数组,遍历这个数组来拼接邮件内容,就能完全匹配表单的原有顺序:
function sendFormByEmail (e) { var email = "email@email.com, email2@email.com"; var txt = ""; // 严格按照表单/关联表格的字段顺序定义数组 var fieldOrder = [ "Timestamp", "Email Address", "Site Name", "Address", "ORD", "Approving Person (Drop Down)", "Serial Number", "Affect Item", "Packed (Drop Down)", "Special Instructions" ]; // 按数组顺序遍历字段 fieldOrder.forEach(function(field) { // 确保字段存在(避免表单修改后出现错误) if (e.namedValues[field]) { txt += field + ' :: ' + e.namedValues[field].toString() + "\n\n"; } }); MailApp.sendEmail(email, "Part Requested", txt); }
方案2:自定义排序规则
如果想自己调整字段顺序,只需要修改fieldOrder数组里的元素位置就行。比如把高频查看的字段提前:
// 自定义顺序示例:把ORD、Serial Number放前面 var fieldOrder = [ "ORD", "Serial Number", "Site Name", "Email Address", "Timestamp", "Address", "Approving Person (Drop Down)", "Affect Item", "Packed (Drop Down)", "Special Instructions" ];
注意事项
如果后续表单新增、删除或重命名字段,记得同步更新fieldOrder数组,避免邮件里遗漏字段或出现无效字段。
内容的提问来源于stack exchange,提问作者Whiskeythrottle
相关产品推荐
相关产品推荐

