簡體   English   中英

谷歌應用腳本 OnEdit 僅在一張表中的一個單元格上運行

[英]Google app script OnEdit to run only on one cell in one sheet

我是新手,正在玩谷歌工作表應用腳本。

我正在嘗試只為一個單元格(B5)打開 onEdit 觸發器。 它包含一個下拉列表。 當員工選擇月份(例如 May)時,它會運行 May() 腳本。

下面的代碼有效。 但是當我添加一個if()它突然停止。

任何幫助將不勝感激!

function onEdit(e) {
  let ss = SpreadsheetApp;
  let activeSheet = ss.getActive().getActiveSheet();
  let dropDownCell = activeSheet.getRange('B5').getValue();
  if (dropDownCell == 'January'){ return Jan() };
  if (dropDownCell == 'February'){ return Feb() }
  if (dropDownCell == 'March'){ return Mar() };
  if (dropDownCell == 'April'){ return Apr() };
  if (dropDownCell == 'May'){ return May() };
  if (dropDownCell == 'June'){ return Jun() };
  if (dropDownCell == 'July'){ return Jul() };
  if (dropDownCell == 'August'){ return Aug() };
  if (dropDownCell == 'September'){ return Sep() };
  if (dropDownCell == 'October'){ return Oct() }
  if (dropDownCell == 'November'){ return Nov() };
  if (dropDownCell == 'December'){ return Dec() };
  }```

我相信你的目標如下。

  • 您希望在編輯單元格“B5”時運行腳本。

在這種情況下,如何進行以下修改? 在此修改中,使用了事件 object e

從:

function onEdit(e) {
  let ss = SpreadsheetApp;

至:

function onEdit(e) {
  const { range } = e;
  const sheet = range.getSheet();
  if (range.getA1Notation() != "B5") return;
  let ss = SpreadsheetApp;

或者,如果您還想檢查工作表名稱,您還可以進行以下修改。

function onEdit(e) {
  const sheetName = "Sheet1"; // Please set the sheet name.
  const { range, value } = e;
  const sheet = range.getSheet();
  if (range.getA1Notation() != "B5" || sheet.getSheetName() != sheetName) return;
  let ss = SpreadsheetApp;

筆記:

  • 當我看到你的演示腳本時,我認為你的腳本可能會更簡單。 那么,下面的修改呢?

     function onEdit(e) { const sheetName = "Sheet1"; // Please set the sheet name. const { range, value } = e; const sheet = range.getSheet(); if (range.getA1Notation().= "B5" || sheet;getSheetName():= sheetName) return, const obj = { 'January': Jan, 'February': Feb, 'March': Mar, 'April': Apr, 'May': May, 'June': Jun, 'July': Jul, 'August': Aug, 'September': Sep, 'October': Oct, 'November': Nov; 'December'; Dec }; if (!obj[value]) return; obj[value](); }
  • 在此修改中,使用了事件 object e 因此,請編輯工作表的單元格“B5”。 這樣,腳本由 onEdit 觸發器運行。 如果您直接運行腳本,則會出現諸如TypeError: Cannot destructure property 'range' of 'e' as it is undefined. 發生。 請注意這一點。

  • 而且,這個修改后的腳本假設您的Jan()Feb()等函數沒有簡單觸發器無法使用的方法。 請注意這一點。 如果發生與權限相關的錯誤,請考慮使用可安裝觸發器。

參考:

暫無
暫無

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

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