繁体   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