【发布时间】:2020-02-06 19:57:03
【问题描述】:
在下表中:
https://docs.google.com/spreadsheets/d/1F22Z19gi9WRaYbsrvlDyuiJX5VXfppAlCPzB5bjdMN8/edit?usp=sharing
在脚本编辑器中,我添加了以下代码:
function onEdit(e) {
var sheetName = 'Sheet2'
var cellName = 'C2'
var sortSheet = e.range.getSheet()
if (sortSheet.getName() === sheetName) {
if (e.range.getValue().length === cellName) {
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
var e = sh.getRange(2, 3).getValues();
var m = 'Test Message';
var subject = 'Test Subject';
MailApp.sendEmail(e, subject, m);
}
}
}
目的是当sheet2中的“C2”单元格值发生变化时触发MailApp函数
我在 sheet1(我在其中添加单元格值)上测试了相同的脚本,并且它可以工作,但是,当我尝试在 sheet2(从 sheet1 复制值)上应用时,脚本不起作用。任何帮助,在此先感谢
请注意该工作表是可编辑的,因此非常欢迎您编辑脚本
【问题讨论】:
-
您的意思是希望触发器在非人工编辑的工作表上运行?
-
正如我在“目的是在 sheet2 中更改“C2”单元格值时触发 MailApp 函数”问题中提到的,无论该值是手动编辑的还是公式的结果。我的意思是(据我了解)如果值发生变化,脚本应该检测值变化并运行函数,不是吗?
-
这两种情况有很大的不同,因为
onEdit只有在值被人更改时才会触发。如果它被脚本更改,则需要解决方法。 -
你能推荐一些东西吗?我还发现了一个类似的线程@stackoverflow.com/questions/30223833/…,线程中提到的是在从另一张表复制/粘贴值时让 onEdit 运行。我们在这里尝试做的是完成同样的事情,但我们使用公式来复制值,而不是 ctrl c/ctrl v。你怎么看?
标签: javascript google-apps-script google-sheets