我有一个Google电子表格,我希望每次Zapier自动化添加新行时都会自动更新一个字段。
每次我通过添加行或对现有行进行编辑来手动测试脚本时,脚本都会按预期触发。但是,当Zapier在电子表格中添加新行时,绝对没有任何反应。
我知道为什么以及如何解决这个问题?
这是我尝试使用的脚本:
function onEdit(e) {
var row = e.range.getRow();
SpreadsheetApp.getActiveSheet().
getRange(row, 10).setValue('My_New_Value');
}
答案 0 :(得分:2)
我能够复制您在脚本中看到的行为。我相信当你在活动数据范围之外添加一行时,它不会触发编辑事件。为了捕捉这些事件,你还需要捕捉chagne事件。
https://developers.google.com/apps-script/reference/script/spreadsheet-trigger-builder#onchange
function onOpen ()
{
var sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger("myFunctionx")
.forSpreadsheet(sheet)
.onChange()
.create();
}
查看更改事件的文档,您可以检测到插入了一行,但未返回行号。
https://developers.google.com/apps-script/guides/triggers/events#change
function myFunctionx(e) {
Logger.log("Change3");
Logger.log(e.changeType);
}
您可以通过查看活动范围中的最后一行来找到插入的行。
function myFunctionx(e) {
Logger.log("Change3");
Logger.log(e.changeType);
Logger.log(SpreadsheetApp.getActiveRange().getLastRow());
}
如果复制并粘贴到多个单元格中,则更改可能会影响多行。你应该遍历你范围内的所有行。
function onEdit(e) {
for(var i=e.range.getRow(); i<= e.range.getLastRow(); i++) {
SpreadsheetApp.getActiveSheet().
getRange(i, 10).setValue(e.range.getA1Notation());
}
}