[英]Google Apps Script - Send Email based on value in cell
我是 Google App Scripts 的新手,并且有一个包含三列的电子表格:名称、过期和上次联系: https://docs.google.com/spreadsheets/d/1W04JiFZwpGCD-qddUkNJ9xQ1xiYwZnGhissudF1EvxM/edit?usp=sharing
我想向自己发送一个 email 提醒,其中包含 B 列中逾期值的任何人的姓名。
到目前为止,我只能编写一个脚本,将 email 发送给我自己的第 2 行。我不知道如何让脚本循环遍历 B 列中的值。
这是我的脚本:
function sendEmail() {
var overdueRange = SpreadsheetApp.getActiveSpreadsheet().getRange("B2");
var overdueValue = overdueRange.getValue();
if (overdueValue === "Overdue"){
var nameRange = SpreadsheetApp.getActiveSpreadsheet().getRange("A2");
var name = nameRange.getValues();
var message = 'Reach out to ' + name
var subject = 'Reach out to this person.'
MailApp.sendEmail('myemail@email.com', subject, message);
}
}
sendEmail()
只需几点说明该过程:
我假设您正在从脚本编辑器执行sendEmail()
。 这样,由于您在 function 之外还有sendEmail()
,因此您最终将调用sendEmail()
两次。 删除 function 的“全局”调用,并从脚本编辑器中仅调用sendEmail()
。
不建议在电子表格object 上应用getRange
。 按名称或 position 定义特定工作表。 在下面的示例脚本中,我按名称 ( Sheet1
) 定义工作表。 将该名称更改为您的实际情况。
代码中的name
是二维数组,而不是单个值。 请注意这一点,因为这不是正确的方法。
在下面的脚本中,我定义了一组A
和B
列。 名称在A
列中定义,过期状态在B
列中定义。 通过这种方式,您可以迭代此数组,并通过访问数组本身在每次迭代中获取单个值。 我使用了forEach ,但可以随意使用您自己的迭代方法。
function sendEmail() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet1'); // change Sheet1 to the name of your sheet
const data = sh.getRange('A2:B'+sh.getLastRow()).getValues();
data.forEach(r=>{
let overdueValue = r[1];
if (overdueValue === "Overdue"){
let name = r[0];
let message = 'Reach out to ' + name;
let subject = 'Reach out to this person.'
MailApp.sendEmail('myemail@email.com', subject, message);
}
});
}
适用于脚本的工作表:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.