【问题标题】:Getting email notification via Google Sheets when =importxml cell value changes当 =importxml 单元格值更改时,通过 Google 表格获取电子邮件通知
【发布时间】:2020-09-10 13:03:30
【问题描述】:

我正在制作一个使用多个 =IMPORTXML 函数从网页导入不断变化的文本和价格值的电子表格。目前,我的 Google 表格中有以下列:

A:“网址信息”
B:“网址”
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);
 }

};

【问题讨论】:

  • 你应该看看Events。后者将允许您查看更改了哪个单元格并执行相应的操作。

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


【解决方案1】:

恐怕这对于触发器的设置方式是不可能的。

当公式从外部源提取数据时触发触发器“更改时”是唯一触发更改的触发器。不幸的是,它不会返回哪个 cellvalue 已更改,它只会返回哪个 sheet 已更改。

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

可能的解决方法:

您可以使用Time-driven trigger AKA 时钟触发器来解决此问题。编写一个经常触发的脚本以检查工作表中的更改,如果发生更改,则发送电子邮件。您可以将所有数据复制到另一个工作表,然后比较这些值,或者使用 Properties Service 在脚本中持久化数据。

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多