簡體   English   中英

每當 Google 表格中的單元格值發生更改時,都會運行 onEdit() function

[英]Have an onEdit() function run whenever a cell value is changed in Google Sheets

我有一張包含以下內容的工作表:

ID        ROW     STATUS  ......
3588053   4       NEW

IDROW的數據來自名為KDCAlerts外部電子表格

當 KDCLog 發生變化時執行的onEdit命令(或在本例中為 onMyEdit )更改填充STATUS

每次外部電子表格更改時, IDROW都會更改(例如:添加/刪除行等)

我需要做的是修復此問題,以便在IDROW更改時運行onMyEdit function

我怎樣才能做到這一點? 下面是目前正在使用的代碼。

任何幫助、提示或建議將不勝感激。

TIA

function creatTrigger() {
  if(ScriptApp.getProjectTriggers().filter(t => t.getHandlerFunction() == "onMyEdit").length == 0) {
    ScriptApp.newTrigger("onMyEdit").forSpreadsheet(SpreadsheetApp.getActive()).onEdit().create();
  }
}

function onMyEdit(e) {
  var sh = e.range.getSheet();
  if (sh.getName() == "KDCLog" ) {
    var extSS = SpreadsheetApp.openById("1b5qiNxxxxxxxxxRuLf-8dTBgRU9cHLBbd2A");
      var extSH = extSS.getSheetByName("KDCAlerts");

  } else { return; }
....
....

更新:

@doubleunary - 感謝您的回復。

目前尚不清楚 ID 和 ROW 列中的值是如何寫入電子表格的,

有 2 個文件: KDCLogKDCAlerts

KDCLog!ID填充如下:

=IF ( ISERROR( INDEX(SORTN(FILTER({KDCAlerts!E:E,KDCAlerts!H:H, KDCAlerts!A:A}, KDCAlerts!D:D=E7),1,,2,FALSE),,3) ), -1, INDEX(SORTN(FILTER({KDCAlerts!E:E,KDCAlerts!H:H, KDCAlerts!A:A}, KDCAlerts!D:D=E7),1,,2,FALSE),,3) )

因此,它使用 function(在 KDCLog 工作表中執行)從KDCAlerts “拉取”。

每當KDCAlerts發生變化時,KDCLog!ID 中的值也會發生變化(無需手動干預- KDCAlerts隨着行的添加而變化)。

如果您正在使用另一個腳本寫入電子表格,則可能不會發送任何事件。

對於STATUS列,它填充了一個onEdit 函數(見上文)

可以使用可安裝的更改觸發器監視的觸發事件。

有沒有關於這如何工作的示例

您不能在此處使用on edit觸發器,因為它僅在用戶手動編輯電子表格時觸發,無論您使用的是簡單觸發器還是可安裝觸發器

目前尚不清楚 ID 和 ROW 列中的值是如何寫入電子表格的,這實際上決定了您是否可以捕獲這些更新。 如果您正在使用另一個腳本寫入電子表格,則很可能沒有發送任何事件

如果您使用的是其他集成工具,它可能會觸發事件,這些事件可以通過可安裝on change觸發器進行監控。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM