当= importxml单元格值更改时,通过Google表格获取电子邮件通知

时间:2020-09-10 13:03:30

标签: google-apps-script google-sheets notifications

我正在处理一个电子表格,该电子表格使用多个= IMPORTXML函数从网页中导入更改的文本和价格值。目前,我的Google表格中有以下几列:

A:“ URL信息”
B:“ URL”
F-N:“价格”(每列中的价格都不同)

我有什么

通过位于 this page 上的脚本(感谢Umesh Agarwal),在电子表格中进行更改后,我将收到一封电子邮件通知。在 F2:N200 范围内的单元格中进行更改后,我将收到一封电子邮件,其中包含已更改的单元格。问题是,一旦具有= importxml函数值的单元格发生更改,我就有脚本向我发送包含更改后的单元格的电子邮件。

此刻,当由于= importxml函数而导致单元格发生更改时,脚本会向我发送一封电子邮件,通知我单元格A1已更改...它没有向我发送已更改的正确单元格,这使我很难看看发生了什么变化。我该如何解决这个问题?

function sendEmailonEdit() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var cellValue = ss.getActiveSheet().getActiveRange().getA1Notation();
var getColumn = ss.getActiveSheet().getActiveRange().getColumn();
var sheetname = ss.getActiveSheet().getName();
var user = Session.getActiveUser().getEmail();
var Toemail = 'myemailid_1234@gmail.com';
var subject = 'New Entry in ' + data + '.' + ss.getName();
var body = 'Your file has a new entry in - ' + sheetname + ' Updated by - ' + user + data
' check file- ' + ss.getUrl();

if(data.indexOf('F2:N200')!=-1.23456789) {

MailApp.sendEmail(Toemail,subject, body);
 }

};

1 个答案:

答案 0 :(得分:0)

恐怕无法通过触发器来设置它。

当公式从外部源提取数据时触发的触发器“仅更改时”是 触发器,它将获取更改。不幸的是,它不会返回更改了 cell value 的值,只会返回更改了 sheet 的值。

您可能会遇到的另一个替代触发器是“ on Edit”,但是,当通过公式从外部源¯\_(ツ)_/¯提取数据的公式更新工作表时,此触发器不会触发

可能的解决方法途径:

您也许可以使用Time-driven trigger AKA时钟触发器来解决此问题。编写一个经常触发的脚本,以检查工作表中的更改,并发送电子邮件(如果有的话)。您可以将所有数据复制到另一张纸上,然后比较这些值,或使用Properties Service将数据保留在脚本中。