2017-08-28 59 views
1

我有一个Google电子表格,我希望每当Zapier自动化添加新行时自动更新一个字段。在Zapier更新工作表时运行onEdit触发器

每次我通过添加行或对现有行进行编辑来手动测试脚本时,脚本会按预期触发。但是,当Zapier向电子表格添加新行时绝对没有任何反应。

任何想法为什么以及如何解决这个问题?

此,我想使用这个脚本:

function onEdit(e) { 
    var row = e.range.getRow(); 
    SpreadsheetApp.getActiveSheet(). 
     getRange(row, 10).setValue('My_New_Value'); 
} 

回答

0

我可以复制你看到在你的脚本的行为。我相信,当您在活动数据范围外添加一行时,它不会触发编辑事件。为了抓住这些事件,您还需要抓住变革事件。

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()); 
    } 
}