【问题标题】:onEdit trigger for specific sheets in a spreadsheet?电子表格中特定工作表的onEdit触发器?
【发布时间】:2018-03-24 14:07:19
【问题描述】:

我无法找到有关如何设置 onEdit 触发器的优质资源。我有一个功能,我只想在编辑特定工作表时运行。例如说我有 Sheet1、Sheet2、Sheet3、Sheet4、Sheet5。我的脚本从工作表 2、3、4 中提取数据并填充工作表 1。我只希望我的脚本在有人编辑工作表 2、3 或 4 时运行。我将如何设置此触发器?

【问题讨论】:

  • 欢迎来到 Stack Overflow。 SO 不是请求产品文档的平台。如果您希望人们提供有用的解决方案,请提出一个特定的编程问题,并概述您尝试过的内容、尝试实现的内容以及无效的内容。

标签: google-apps-script google-sheets triggers


【解决方案1】:

有多种方法可以做到这一点,每种方法都有自己的优点。您对每种情况都有特定的设置吗?您是否为每种情况运行不同的功能?等等

  • 使用if 语句检查每个工作表的名称
    • if (name === "name 2" || name === "name 3" || ...) { /* common code */ ...
  • 使用switch 语句与case fall-through(或没有fall through,允许基于工作表的特定设置)
    • switch (name) { case "name 2": ...
  • 使用数组来保存所需的“有效”工作表名称,并检查编辑的工作表名称是否在带有.indexOf() 的数组中
    • var names = ["sheet 2 name", "sheet 3 name" ... ]; if (names.indexOf(name) { ...
  • 等等

在所有情况下,您都希望从事件对象中获取已编辑工作表的名称:

// My simple-trigger function that runs on edit:
function onEdit(eventObject) {
  if (!eventObject) {
    /* the function was run from the script editor */
    return;
  }
  var editedSheetName = eventObject.range.getSheet().getName();
  /* perform some sort of comparison to figure out if 'editedSheetName'
     is one we want to work on, and if so, do so. */
  ...

您应该查看 Javascript 语言参考(例如 Mozilla Developer Network 上的参考)以熟悉执行流控制。

您可以在 Apps 脚本触发器文档中查看事件对象中可用的属性:https://developers.google.com/apps-script/guides/triggers/events

【讨论】:

  • 谢谢。我得到了它的第一个建议。数组的想法是我绝对需要玩的。并感谢您的资源。
猜你喜欢
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
相关资源
最近更新 更多