遍历列,查找匹配项并根据单元格值发送电子邮件

时间:2019-08-10 12:59:44

标签: google-apps-script

我有一个电子表格(这里-> https://docs.google.com/spreadsheets/d/1U0A8PmKYxkXn8SrfKOo6XsJb-XxkJNYZqd0QIKkFsP4/edit?usp=sharing),该电子表格从表单收集数据并执行多个if函数以对答案进行分类。 我需要做的是根据单元格值(表格“代码扩展数据+最小说明填充”,最后一栏“提醒最小描述”)发送后续电子邮件(提醒)。为此,我想我必须遍历该列,找到一个匹配项(“保持发送提醒”,“停止发送提醒”)并发送邮件。 但是最终发生的是代码发出了73条后续消息。我不知道73,如果我只有2行带有“继续发送电子邮件”。

function sendEmail() {
var ss = SpreadsheetApp.openById("1lzc7-WRxEBQc5D_SR0F-d- 
9PhQjmVk37UOgBQTGw3_Q");
var sh = ss.getSheetByName('Code extension data + Minimum desc. fill');
var lastRow = sh.getLastRow();
var data = sh.getRange(1,28,lastRow,28).getValues();
for (i=0; i < data.length;i++){
var num = parseInt(data[i]);
if (num = "Keep sending reminder") {
var emailAddress = "email@email.com";
var message = "test body";
var subject = "test subject";
MailApp.sendEmail({
name: "Your Name",
to: emailAddress,
subject: subject,
htmlBody: message
}); 
  }
}
}

2 个答案:

答案 0 :(得分:1)

您的if语句只有一个等号,请使用==或===更好。

答案 1 :(得分:1)

您的if语句正在将numberstring(“保持发送提醒”)进行比较,该结果永远不会被评估为true。无需使用parseInt来完成您想做的事情。另外,您正在遍历string[][],因此必须使用data[i][columnIndex]来访问希望在其中找到“继续发送提醒”的列。

function sendEmail() {
  var ss = SpreadsheetApp.openById("1lzc7-WRxEBQc5D_SR0F-d-9PhQjmVk37UOgBQTGw3_Q");
  var sh = ss.getSheetByName('Code extension data + Minimum desc. fill');
  var lastRow = sh.getLastRow();
  var data = sh.getRange(1,28,lastRow,28).getValues();
  for (var i=0; i < data.length; i++) {
    //var num = parseInt(data[i]);
    if (data[i][27] === "Keep sending reminder") {
      var emailAddress = "email@email.com";
      var message = "test body";
      var subject = "test subject";
      MailApp.sendEmail({
        name: "Your Name",
        to: emailAddress,
        subject: subject,
        htmlBody: message
      }); 
    }
  }
}