![](/img/trans.png)
[英]Why some of emails which sent by Google Apps Script with Form-submission trigger send twice?
[英]Google Form send emails based on answer of checkbox question which allows for multi-option submission
我有一個谷歌表單,問題的答案決定了誰在提交表單時收到 email。 該問題是一個多選文本框,因此可以選擇 1 到 6 個選項。 問題是腳本中的變量var announce
,所有if
語句都用於檢查該答案的情況。
當僅選擇一個選項時,我當前的腳本有效(工作腳本 = 正確的部門收到一封電子郵件)。 如果選擇了兩個或更多選項,則不會發送 email。 執行中沒有出現錯誤。
選擇多個選項時,單元格中的數據顯示為“選項 1、選項 4”。 我在腳本中列出的所有案例僅適用於“選項 1”或“選項 4”等。有沒有一種方法可以使這項工作無需對可能發生的 6 個選擇的每個可能組合進行if
語句?
function sendFormByEmail(e)
{
// Remember to replace XYZ with your own email address
var named_values = e.namedValues
var teachername = named_values["Teacher Name"];
var info = named_values["Your message/announcement"];
var time = named_values["Please include time frame"];
var photos = named_values["Include photos with this form if applicable; you can also create the graphic for social media and include below"];
var announce = named_values["Choose announcement outlet"];
var email;
// Optional but change the following variable
// to have a custom subject for Google Docs emails
// The variable e holds all the form values in an array.
// Loop through the array and append values to the body.
var message = "";
for(var field in e.namedValues) {
message += field + ' :: '
+ e.namedValues[field].toString() + "\n\n";
}
if(announce.includes("Option 1")){
var email = "dept1@school.net";
var subject = "Option 1 request";
MailApp.sendEmail(email, subject, message);
// put here the case clause, don't include break;
}
if(announce.includes("Option 2")){
var email = "dept2@school.net";
var subject = "Option 2 request";
MailApp.sendEmail(email, subject, message);
}
if(announce.includes("option 3")) {
var email = "dept3@school.net";
var subject = "Option 3 request";
MailApp.sendEmail(email, subject, message);
}
if(announce.includes("Option 4")) {
var email = "dept4@school.net";
var subject = "Option 4 request";
MailApp.sendEmail(email, subject, message);
}
if(announce.includes("Option 5")){
var email = "dept5@school.net";
var subject = "Option 5 request";
MailApp.sendEmail(email, subject, message);
}
if(announce.includes("Option 6")){
var email = "dept6@school.net";
var subject = "Option 6 Request";
MailApp.sendEmail(email, subject, message);
}
}
運行測試后的控制台日志:測試 1 - 在觸發電子郵件的問題上選擇的一個選項。 Email 已發送。 *請注意:我在要發布的腳本中輸入了通用信息 - 日志顯示了實際值。 示例:選項 6 是“Phone Call Home”
2022 年 10 月 7 日下午 2:32:21 調試
{"authMode":"FULL","namedValues":{"Email Address":["heritagecougars@yanceync.net"],"Teacher Name":["J"],"如果適用,請在此表格中包含照片;您還可以為社交媒體創建圖形並包括以下內容":[""],"選擇公告渠道":["打電話回家"],"時間戳":["10/7/2022 14:32:21"] ,"您的消息/公告":["測試選擇的一個選項"],"請包括時間范圍":[""]},"范圍":{"columnEnd":6,"columnStart":1,"rowEnd" :36,"rowStart":36},"source":{},"triggerUid":"12607666","values":["10/7/2022 14:32:21","heritagecougars@yanceync.net" "J","打電話回家","測試一個選項","",""]}
測試 2 - 在觸發電子郵件的問題上選擇兩個選項。 沒有發送電子郵件。
2022 年 10 月 7 日下午 2:32:40 調試
{"authMode":"FULL","namedValues":{"請包括時間范圍":[""],"教師姓名":["J"],"您的消息/公告":["測試選擇的 2 個選項"],"Email Address":["heritagecougars@yanceync.net"],"Timestamp":["10/7/2022 14:32:39"],"如果適用,在此表格中包含照片;您也可以創建社交媒體的圖形,包括以下內容":[""],"選擇公告渠道":["MHHS 網站,打電話回家"]},"范圍":{"columnEnd":6,"columnStart":1, "rowEnd":37,"rowStart":37},"source":{},"triggerUid":"12607666","values":["10/7/2022 14:32:39","heritagecougars@yanceync .net","J","MHHS Website, Phone call home","test 2 options chosen","",""]}
Google Forms 將檢查的選項作為字符串發送:
"Choose announcement outlet":["MHHS Website, Phone call home"]
考慮到這一點,更換
var announce = named_values["Choose announcement outlet"];
經過
var announce = named_values["Choose announcement outlet"][0].split(',');
筆記:
announce.includes
的參數應該是 Google Forms 中選項之一的值,即不是"Option 6"
而應該是"Phone call home"
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.