当通过 API (Zapier) 更新一行时,如何触发 Google 表格中的 Apps 脚本功能

问题描述 投票:0回答:2

当通过 Api 编辑工作表时,我无法触发我的函数 - 它仅在手动更新工作表时才有效。

对于上下文-sheet2 使用 zapier 从 stripe 收集 api 信息,sheet1 从此更新

function incrementNumber(e) {
    var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
    var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
    var data1 = sheet1.getDataRange().getValues();
    var columnA = 1;
    var editedRow = e.range.getRow();
    var editedCol = e.range.getColumn();
    var updatedValue = sheet2.getRange(editedRow, columnA).getValue();
    var updatedDate = sheet2.getRange(editedRow, columnA+1).getValue();
    var matchFound = false;
    var newRow;
    if (editedCol == columnA) {
        for (var i = 0; i < data1.length; i++) {
            if (data1[i][columnA-1] == updatedValue) {
                matchFound = true;
                var nextColumn = sheet1.getRange(i+1, columnA+1).getValue() || 0;
                sheet1.getRange(i+1, columnA+1).setValue(nextColumn+1);
                break;
            }
        }
        if (!matchFound) {
            newRow = data1.length + 1;
            sheet1.getRange(newRow, columnA).setValue(updatedValue);
            if (updatedDate >= new Date("2023-01-01T00:00:00.000Z") && updatedDate <= new Date("2023-01-04T17:30:00.000Z")) {
                sheet1.getRange(newRow, columnA+1).setValue(1);
            } else if (updatedDate > new Date("2023-01-04T17:30:01.000Z") && updatedDate <= new Date("2023-01-11T17:30:00.000Z")) {
                sheet1.getRange(newRow, columnA+1).setValue(2);
            } else if (updatedDate > new Date("2023-01-11T17:30:01.000Z") && updatedDate <= new Date("2023-01-18T17:30:00.000Z")) {
                sheet1.getRange(newRow, columnA+1).setValue(3); 
            } else if (updatedDate > new Date("2023-01-18T17:30:01.000Z") && updatedDate <= new Date("2023-01-25T17:30:00.000Z")) {
            } 
        }
    }
}

function onEdit(e) {
    var editedSheet = e.source.getActiveSheet();
    if(editedSheet.getName() === "Sheet2") {
        incrementNumber(e);
    }
}

我尝试了时间间隔,但无法让它发挥作用

javascript google-apps-script google-sheets zapier
2个回答
0
投票
  1. 尝试在 Google 表格(脚本)中使用 [可安装的触发器][1] 并尝试使用“更改时”而不是“编辑时”事件触发器(这将允许应用程序脚本捕获新行插入)。
  2. 不要忘记在清单中设置必要的权限:
  • 转到“项目设置”
  • 勾选“在编辑器中显示“appsscript.json”清单文件”选项
  • 转到代码编辑器
  • 转到“appsscript.json”
  • 设置:
"oauthScopes": [
    "https://www.googleapis.com/auth/spreadsheets.currentonly",
    "https://www.googleapis.com/auth/spreadsheets"
]```

![Trigger "On change" example][2]


  [1]: https://developers.google.com/apps-script/guides/triggers/installable
  [2]: https://i.stack.imgur.com/FxNQN.png

0
投票

在 API (make.com) 添加一行后,我成功地让触发器执行应用程序脚本函数。我将触发器设置为 OnChange,并在通过 API 添加行的工作表中,我有一个 Arrayformula 来计算列中的所有行(并在新行中设置一个值)。希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.