簡體   English   中英

Google 表單根據復選框問題的答案發送電子郵件,允許多選項提交

[英]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(',');

筆記:

  1. 請確保您的 Google Forms 中相應問題中的選項不包含逗號。
  2. announce.includes的參數應該是 Google Forms 中選項之一的值,即不是"Option 6"而應該是"Phone call home"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM