Running onEdit trigger when sheet is updated by Zapier

前端 未结 1 1925
盖世英雄少女心
盖世英雄少女心 2020-12-17 05:40

I have a Google spreadsheet where I would like to automatically update one field every time a new row is added by a Zapier automation.

Every time I test the script m

相关标签:
1条回答
  • 2020-12-17 05:44

    I was able to replicate the behavior you are seeing in your script. I believe that when you add a row outside of the active data range, it does not trigger an edit event. In order to catch those events, you will also need to catch chagne events.

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

    Looking at the documentation for a change event, you can detect that a row was inserted, but the row number is not returned.

    https://developers.google.com/apps-script/guides/triggers/events#change

    function myFunctionx(e) {
        Logger.log("Change3");
        Logger.log(e.changeType);
    }
    

    You might be able to find the row that was inserted by looking at the last row in the active range.

    function myFunctionx(e) {
        Logger.log("Change3");
        Logger.log(e.changeType);
        Logger.log(SpreadsheetApp.getActiveRange().getLastRow());
    }
    

    It is possible for a change to affect more than one row if you copy and paste into multiple cells. You should loop through all of the rows in your range.

    function onEdit(e) {
        for(var i=e.range.getRow(); i<= e.range.getLastRow(); i++) {
            SpreadsheetApp.getActiveSheet().
                getRange(i, 10).setValue(e.range.getA1Notation());
        }
    }
    
    0 讨论(0)
提交回复
热议问题