忽略空白的电子邮件地址输入字段Google Apps脚本

时间:2018-08-30 18:07:44

标签: email google-apps-script

我有一个HTML表单,其中包含来自各个供应商的电子邮件地址。我正在创建一种邮件合并功能,以便在提交表单时可以向所有联系人发送个性化电子邮件。这是我的.gs文件:

function sendEmail(form) {
  const sSheet = SpreadsheetApp.getActiveSpreadsheet(); 
  const file = DriveApp.getFileById(sSheet.getId());
  const documentUrl = file.getUrl();

  /* var toEmail = form.toAddress;  
  var ccEmail = form.ccAddress;  
  var fromEmail = "****@*****.com";
  var subject = form.subject;
  var message = form.message;   */


  var toEmail = "";  
  var fromEmail = "****@*****.com";
  var message = "";

var hotelAddresses = [
            form.toAddress1,
            form.toAddress2,
            form.toAddress3,
            form.toAddress4,
            form.toAddress5,
            form.toAddress6,
            form.toAddress7,
            form.toAddress8,
            form.toAddress9,
            form.toAddress10,
            form.toAddress11,
            form.toAddress12,
            form.toAddress13,
            form.toAddress14,
            form.toAddress15,
            form.toAddress16,
            form.toAddress17,
            form.toAddress18,
            form.toAddress19,
            form.toAddress20,
            form.toAddress21,
            form.toAddress22,
            form.toAddress23,
            form.toAddress24,
            form.toAddress25,
            form.toAddress26,
            form.toAddress27,
            form.toAddress28,
            form.toAddress29,
            form.toAddress30,
            form.toAddress31,
            form.toAddress32,
            form.toAddress33,
];

var contactNames = [
            form.contactName1,
            form.contactName2,
            form.contactName3,
            form.contactName4,
            form.contactName5,
            form.contactName6,
            form.contactName7,
            form.contactName8,
            form.contactName9,
            form.contactName10,
            form.contactName11,
            form.contactName12,
            form.contactName13,
            form.contactName14,
            form.contactName15,
            form.contactName16,
            form.contactName17,
            form.contactName18,
            form.contactName19,
            form.contactName20,
            form.contactName21,
            form.contactName22,
            form.contactName23,
            form.contactName24,
            form.contactName25,
            form.contactName26,
            form.contactName27,
            form.contactName28,
            form.contactName29,
            form.contactName30,
            form.contactName31,
            form.contactName32,
            form.contactName33,            
];

var days = [
            form.day1,
            form.day2,
            form.day3,
            form.day4,
            form.day5,
            form.day6,
            form.day7,
            form.day8,
            form.day9,
            form.day10,
            form.day11,
            form.day12,
            form.day13,
            form.day14,
            form.day15,
            form.day16,
            form.day17,
            form.day18,
            form.day19,
            form.day20,
            form.day21,
            form.day22,
            form.day23,
            form.day24,
            form.day25,
            form.day26,
            form.day27,
            form.day28,
            form.day29,
            form.day30,
            form.day31,
            form.day32,
            form.day33,            
];

var dates = [
            form.date1,
            form.date2,
            form.date3,
            form.date4,
            form.date5,
            form.date6,
            form.date7,
            form.date8,
            form.date9,
            form.date10,
            form.date11,
            form.date12,
            form.date13,
            form.date14,
            form.date15,
            form.date16,
            form.date17,
            form.date18,
            form.date19,
            form.date20,
            form.date21,
            form.date22,
            form.date23,
            form.date24,
            form.date25,
            form.date26,
            form.date27,
            form.date28,
            form.date29,
            form.date30,
            form.date31,
            form.date32,
            form.date33,            
];

var times = [
            form.time1,
            form.time2,
            form.time3,
            form.time4,
            form.time5,
            form.time6,
            form.time7,
            form.time8,
            form.time9,
            form.time10,
            form.time11,
            form.time12,
            form.time13,
            form.time14,
            form.time15,
            form.time16,
            form.time17,
            form.time18,
            form.time19,
            form.time20,
            form.time21,
            form.time22,
            form.time23,
            form.time24,
            form.time25,
            form.time26,
            form.time27,
            form.time28,
            form.time29,
            form.time30,
            form.time31,
            form.time32,
            form.time33,            
];

var additionalInfo = [
            form.additional1,
            form.additional2,
            form.additional3,
            form.additional4,
            form.additional5,
            form.additional6,
            form.additional7,
            form.additional8,
            form.additional9,
            form.additional10,
            form.additional11,
            form.additional12,
            form.additional3,
            form.additional14,
            form.additional15,
            form.additional16,
            form.additional17,
            form.additional18,
            form.additional19,
            form.additional20,
            form.additional21,
            form.additional22,
            form.additional23,
            form.additional24,
            form.additional25,
            form.additional26,
            form.additional27,
            form.additional28,
            form.additional29,
            form.additional30,
            form.additional31,
            form.additional32,
            form.additional33,            
];

for(var i = 0; i<times.length; i++){



var subject = "Meeting - " + days[i] + ", " + dates[i] + " at " + times[i];
toEmail = hotelAddresses[i];
message = "Dear " + contactNames[i] + "," 

          +"<br><br>"+

          "Please confirm the meeting on " + days[i] + " " + dates[i] + " at " + times[i] + "." + "<br>" + "<br>" +

          additionalInfo[i] +

          " If you could kindly let me know if you are able to confirm that would be great." + "<br>" + "<br>" +

          "Many thanks and I look forward to hearing from you soon." + "<br>" + "<br>" +

          "Yours sincerely," + "<br>" + "<br>" +

          form.yourName + "<br>" + "<br>"

          + "<em><b>" + form.yourPosition + "</b></em> <br><br>" +

          "<span style='color:#0e216d'><b>  Company name. </b>"  + "<br>" +






  GmailApp.sendEmail(
    toEmail,         // recipient
    subject,                 // subject 
    'test', {                        // body
      htmlBody: message                 // advanced options
    }
  ); 
}
}

它工作正常,但有时电子邮件的输入字段为空白,在这种情况下,我需要脚本忽略该供应商并继续运行。目前,它显然正在击空输入并停止执行。

我想我需要一个条件语句……类似if(hotelAddresses [i]!= null){}

但是我不知道该在哪里插入...

附加:18年8月31日

对于HTML,我有一系列这样设置的对象(总共33个):

   <input type="checkbox" id="check1" class="check" checked>

   <input type="text" id="name1" class="contactNameInput" name="toAddress1">

   <input type="text" id="contactName1" class="contactNameInput mailName" name="contactName1">

   <input type="text" id="time1" class="contactNameInput hidden mailTime" name="time1">

   <input type="text" id="day1" class="contactNameInput hidden mailDay" name="day1">

   <input type="text" id="date1" class="contactNameInput hidden mailDate" name="date1">

   <textarea class="additional contactNameInput" id="additional1" name="additional1" placeholder="Additional requests..."></textarea>

   <div class="preview1"></div>       

1 个答案:

答案 0 :(得分:0)

您想使用SELECT (SELECT COUNT(*) FROM table_1 WHERE key = 'value') (SELECT COUNT(*) FROM table_2 WHERE another_key = 'another_value') 之类的脚本来分隔有和没有hotelAddresses[i]的情况。如果我的理解正确,那么该修改如何?

修改点:

  • 您要在if(hotelAddresses[i] != null) {}之后添加吗?在当前脚本中,它是"<span style='color:#0e216d'><b> Company name. </b>" + "<br>" +。如果要添加更多字符串,请放入。如果您不想添加,请删除最后一个"<span style='color:#0e216d'><b> Company name. </b>" + "<br>" + GmailApp.sendEmail(...)
  • 我认为+的脚本可以在for循环中使用。

上面反映的脚本如下。

修改后的脚本:

在此修改后的脚本中,对for循环的脚本进行了修改。

if(hotelAddresses[i] != null) {}

注意:

  • 在此修改后的脚本中,for(var i = 0; i<times.length; i++) { var toEmail = hotelAddresses[i]; if (toEmail) { var subject = "subject"; var message = "messages"; GmailApp.sendEmail(toEmail, subject, 'test', {htmlBody: message}); } else { // do something } } subject分别被message"subject"取代。因此,请根据您的情况对其进行修改。
  • 如果您想在"messages"为空时执行某些操作,请修改hotelAddresses[i]
    • 如果您不想在// do something为空时做某事,请删除hotelAddresses[i]

如果我误解了您的问题,请告诉我。我想修改它。