我是Google Scripting的新手,我需要一些帮助,因为我一直在搜索和修修无济于事。我有一个包含12列数据和越来越多的行的谷歌表。我想要做的是,如果其中一列(K列)中的值与之前的值相比变化超过10%,则会向我发送一封电子邮件。此外,我希望电子邮件中包含来自A:D列的数据(即此产品已更改超过10%)的更改,包括相关表格的链接(将始终是同一张)。
我不确定是否可以拥有此日志并每小时(或自定义)执行电子邮件更新,而不是立即执行。如果没有变化,电子邮件会说"没有变化"。
我知道我要求很多,但我真的很喜欢一些帮助,即使你告诉我其他一些让我接近我所要求的例子。提前致谢。对此,我真的非常感激。
答案 0 :(得分:1)
白色Google表格允许您查看工作表的修订历史记录,我没有看到用于检索过去修订版的API函数。因此,我认为您需要设计一个解决方案来保存您希望比较的值。您可以将这些值保存到另一个Google表格,也可以将每个值保存到命名的脚本属性中。电子表格的最终大小将决定最佳方法。
您需要创建一个脚本函数,并使其每小时从定时触发器运行一次。该脚本将获取一系列值
//Grab 10 rows from column K
var vals = SpreadsheetApp.getActiveSheet().getRange(1, 11, 10, 1);
保存这些值(用于下次执行)。在此示例中,行号用作属性对象的键。您可能希望使用其他列中的值。
var docProp = PropertiesService.getDocumentProperties();
for(var i=0; i<vals.length; i++) {
docProp.setProperty(i, vals[i][0]);
}
要执行新值与先前值的比较,您只需在保存值之前比较docProp中的值。
var docProp = PropertiesService.getDocumentProperties();
for(var i=0; i<vals.length; i++) {
var old = docProp.getProperty(i);
//perform your comparison here. Take action if value changes by more than 10%
Logger.log("Old "+old+"; New "+vals[i][0]);
docProp.setProperty(i, vals[i][0]);
}