gpt4 book ai didi

email - 如何在函数修改单元格值时触发电子邮件通知

转载 作者:行者123 更新时间:2023-12-02 03:18:12 24 4
gpt4 key购买 nike

我想创建一个带有事件触发器的 Google 表格。我正在使用 Google Apps 脚本。

感谢 Stack Overflow,我成功地创建了一个 Google 表格,在单元格被用户修改时自动发送邮件通知。

现在我想知道当单元格被函数(不是用户的修改)修改时是否可行,例如:

if (today() >= B3 ; "late" ; "not late")

该函数检查日期,并给出结果“迟到”或“未迟到”。

enter image description here

当截止日期到达时,该函数将返回“迟到”,并会发送一封邮件警告我。正文邮件将具有 B、D 和 E 列中单元格的值以及修改单元格的同一行(我知道如何使用 e.source、getRange获取行)

到目前为止,我已经试过了,但是没有用

function sendNotification(e) {

if("F" == e.range.getA1Notation().charAt(0)) {

if(e.value == "Late") {

//Define Notification Details
var recipients = "user@example.com";
var subject = "Deadlines" ;
var body = "deadline reached";

//Send the Email
MailApp.sendEmail(recipients, subject, body);
}
}
}

当 F 列中的单元格具有“延迟”值(“延迟”是函数的结果)时,如何设置邮件通知?

最佳答案

您可以使用在计时器触发器上运行的简单脚本,并检查工作表中特定列中的任何修改。

我在很多任务中都使用这样的脚本,包括日历和工作表监控。

下面是一个适用于 F 列的测试代码,您必须手动运行它一次以创建我用来检测更改的 scriptProperties 值。

然后创建一个时间触发器以每小时或您认为有用的任何其他计时器值运行它。

唯一的问题是如果你有一个很长的工作表,你可能会达到属性的长度限制......(现在我不记得最大长度,将不得不检查;-)

代码:

function checkColumnF() {
var sh = SpreadsheetApp.getActiveSheet();
var values = sh.getRange('F1:F').getValues().join('-');
if(PropertiesService.getScriptProperties().getKeys().length==0){ // first time you run the script
PropertiesService.getScriptProperties().setProperty('oldValues', values);
return;
}
var oldValues = PropertiesService.getScriptProperties().getProperty('oldValues').split('-');
var valuesArray = values.split('-');
while (valuesArray.length>oldValues.length){
oldValues.push('x'); // if you append some rows since last exec
}
Logger.log('oldValues = '+oldValues)
Logger.log('current values = '+valuesArray)
for(var n=0;n<valuesArray.length;n++){
if(oldValues[n] != valuesArray[n]){ // check for any difference
sendMail(n+1,valuesArray[n]);
}
}
PropertiesService.getScriptProperties().setProperty('oldValues', values);
}

function sendMail(row,val){
Logger.log('value changed on row '+row+' value = '+val+' , mail sent');
// uncomment below when you are sure everything runs fine to avoid sending dozens of emails while you test !
//MailApp.sendEmail(Session.getActiveUser().getEmail(),'value changed in your sheet','Row '+row+' is now '+val);
}

关于email - 如何在函数修改单元格值时触发电子邮件通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35298160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com