当通过 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);
}
}
我尝试了时间间隔,但无法让它发挥作用
"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
在 API (make.com) 添加一行后,我成功地让触发器执行应用程序脚本函数。我将触发器设置为 OnChange,并在通过 API 添加行的工作表中,我有一个 Arrayformula 来计算列中的所有行(并在新行中设置一个值)。希望有帮助。