当表格没有更改时,我正在尝试在Google电子表格中实现电子邮件通知。
我试图找到与onEdit()函数相反的东西。 我有电子邮件脚本,每天由触发器触发一次。运行正常。
function sendEmailAlert2() {
var ss = SpreadsheetApp.openById("MyID");
var sheetname = ss.getSheetByName("Sheet1");
var Toemail = 'email@gmail.com';
var subject = 'New Entry -' + ss.getName();
var body = 'Your file has a new entry in - ' + sheetname + ' Updated by - ' +
' check file- ' + ss.getUrl();
MailApp.sendEmail(Toemail,subject, body);
}
当我的工作表当天未编辑时,我需要此脚本的条件。 也许有人有主意吗?
答案 0 :(得分:2)
您可以通过实现onEdit函数来实现此目的,该函数每次编辑文件时都会在工作表中插入一个新的时间戳。然后,在sendEmailAlert2()函数中,您可以实施if条件检查当前日期是否等于上一个时间戳记的日期(即上次编辑的日期)。如果今天没有编辑,将发送脚本电子邮件。
function onEdit(e) {
SpreadsheetApp.getActive().getActiveSheet()
.getRange('A1')
.setValue(new Date());
}
function sendEmailAlert2() {
var ss = SpreadsheetApp.openById("MyID");
var sheetname = ss.getSheetByName("Sheet1").getName();
var Toemail = 'email@gmail.com';
var subject = 'New Entry -' + ss.getName();
var body = 'Your file has a new entry in - ' + sheetname + ' Updated by - ' +
' check file- ' + ss.getUrl();
var NoEditSubject = 'No new Entry in' + ss.getName();
var NoEditBody = 'Your file has no new entry in - ' + sheetname + ss.getUrl();
if(sheetname.getRange('A1').getValue().getDay()==new Date().getDay())
{
MailApp.sendEmail(Toemail,subject, body);
}
else
{
MailApp.sendEmail(Toemail,NoEditSubject, NoEditBody);
}
}
答案 1 :(得分:1)
在我这边,我建议您使用DriveApp服务,并检查“上次更新”的日期是否高于24h。
function getAlertedIfNoChange(){
var id = 'ID_SHEET';
var file = DriveApp.getFolderById(id);
var date = file.getLastUpdated();
var lastUpdated = date.getTime();
var today = (new Date()).getTime();
var delta = (24 * 60 * 60 * 1000)- (10*60*1000)
if((today - lastUpdated) > delta){
//Fire alert
Logger.log('No update during the last 24h')
}
}
对于“增量”,您必须将其设置为24毫秒(毫秒),根据经验,我建议您删除几分钟,因为将触发器设置为每天运行时,它不会在同一时间触发。通过在24小时内删除几分钟,您可以确定它会发出警报。
您将触发器编程为每天运行,就可以了。