繁体   English   中英

添加新行时发送 Email(Google App 脚本和 Google 表格)

[英]Send Email When New Rows Are Added (Google App Script & Google Sheets)

我有一个包含 4 列的谷歌表; 标题,url,发布日期和 email 已发送(按该顺序)。

当新行添加到工作表时,我想执行一个谷歌脚本,该脚本将查看“已发送电子邮件”列以查看是否已发送 email,如果未发送,则发送包含新行的 email 并更新相关行) 是的。

我当前的代码只得到第一行,没有别的。

提前致谢,

标记

在此处输入图像描述

(请参阅下面我当前的代码)

function sendemail() {

 //setup function
 var ActiveSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 var StartRow = 2;
 var RowRange = ActiveSheet.getLastRow() - StartRow + 1;
 var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,4);
 var AllValues = WholeRange.getValues();

 //iterate loop
 for (i in AllValues) {

 //set current row
 var CurrentRow = AllValues[i];

 //set subject line
 var Subject = "New Content on IG.com";

 //set HTML template for information
 var message = 
      "<p><b>Title: </b>" + CurrentRow[1] + "</p>" +
      "<p><b>Article: </b>" + CurrentRow[2] + "</p>" +
      "<p><b>Published Date: </b>" + CurrentRow[3] + "</p>";

 //define column to check if sent
 var EmailSent = CurrentRow[4];

 //define who to send grants to 
 var SendTo = "TEST@gmail.com";

 //if row has not been sent, then...  
 if (EmailSent != "Yes") {

  //set the row to look at
  var setRow = parseInt(i) + StartRow;

  //mark row as "sent"
  ActiveSheet.getRange(setRow, 4).setValue("Yes");

  //send the actual email  
  MailApp.sendEmail({
      to: SendTo,
      cc: "",
      subject: Subject,
      htmlBody: message,
});
}
}
}

尝试这个:

function sendemail() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getActiveSheet();
  const sr = 2;
  const rg = sh.getRange(sr, 1, sh.getLastRow() - sr + 1, 4);
  const vs = rg.getValues();
  vs.forEach((r, i) => {
    let Subject = "New Content on IG.com";
    let message =
      "<p><b>Title: </b>" + r[0] + "</p>" +
      "<p><b>Article: </b>" + r[1] + "</p>" +
        "<p><b>Published Date: </b>" + r[2] + "</p>";
    let EmailSent = r[3];
    let SendTo = "TEST@gmail.com";
    if (EmailSent != "Yes") {
      sh.getRange(i + sr, 4).setValue("Yes");
      MailApp.sendEmail({to: SendTo,cc: "",subject: Subject,htmlBody: message});
    }
  })
}

测试:

一种 C
1个 标题 url 日期 发送
2个 t1 u1 d1 是的
3个 t1 u2 d2 是的
4个 t1 u3 d3 是的
5个 t1 u4 d4 是的
6个 t1 u5 d5 是的
7 t1 u6 d6 是的
8个 t1 u7 d7 是的
9 t1 u8 d8 是的
10 t1 u9 d9 是的

然后全部变为是

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM