我是 Google Script 的新手,我正在嘗試創建此腳本,當有新請求填充到特定選項卡和列中時,它將向組織的內部信使應用程式發送通知。
所以選項卡的名稱是“附加請求”,只有當 B 列“請求編號”中的單元格被填寫時,才會觸發通知。編輯填充的單元格時不應觸發通知。
我設法使觸發器僅發生在 B 列。但是,即使我已經在腳本中指定了選項卡“附加請求”,當其他選項卡的 B 列被編輯時,觸發器也會發生。此外,它還會在編輯 B 列中的填充單元格時觸發通知。我可以知道腳本中出了什么問題嗎?我搜索了很多類似的問題以找到答案,但沒有一個有效。
先感謝您!
function API() {
var cell = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Additional Requests").getCurrentCell();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Additional Requests");
var columnofCellEdited = cell.getColumn();
if ((sheet.getSheetName() === "Additional Requests") && (columnofCellEdited === 2)) {
if((cell.value !== null) && (cell.oldValue == null)) {
var payload = JSON.stringify({
"tag": "text",
"text": {
"content": "Hello team, there has been a request/change raised. Do help to review and action on it, thanks!",
"mentioned_email_list": ["[email protected]"],
"at_all": false
}
});
var options = {
'method': 'post',
'payload': payload,
'Content-Type': 'application/json',
};
var test = UrlFetchApp.fetch('messenger api link', options);
console.log(test);
}
else {return;}
}
}

uj5u.com熱心網友回復:
您需要使用事件物件并檢查編輯范圍:
簡單的觸發器和可安裝的觸發器讓 Apps Script 在發生特定事件時自動運行函式。當觸發器觸發時,Apps 腳本將事件物件作為引數傳遞給函式,通常稱為 e。事件物件包含有關導致觸發器觸發的背景關系的資訊。
然后,您可以使用傳遞給編輯函式的事件物件來獲取有關已編輯單元格的資訊:
function API(e) {
var cell = e.range
var ss = e.source.getActiveSpreadsheet()
var sheet = ss.getSheetByName("Additional Requests")
var editedSheet = ss.getActiveSheet()
var columnofCellEdited = cell.getColumn()
if (editedSheet.getName() === "Additional Requests") {
if (columnofCellEdited === 2) {
if (cell.value !== null && cell.oldValue == null) {
/*
* Your onEdit() code goes here
*/
}
}
}
}
您沒有做的事情是檢查活動作業表是否稱為“附加請求”,但如果您手動獲取的作業表是 - 它總是如此。
這也假設您的API()方法已經在可安裝的onEdit觸發器上運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/416503.html
標籤:
