【问题标题】:How to watch multiple tabs using onEdit function如何使用 onEdit 功能观看多个标签
【发布时间】:2021-02-16 16:30:47
【问题描述】:

我遇到了这个脚本,它根据特定列中的值将行从一个选项卡移动到另一个选项卡。它运行良好,但这只能在单个选项卡上运行。此脚本是否可以在多个选项卡上运行并将记录仅移动到特定选项卡?

例如,这里是要查看的标签列表:

  • AAA
  • BBB
  • CCC
  • DDD
  • EEE
  • 等等……

当N列中的值(包含=IF formula,根据条件集确定值)更改为Completed时,脚本会自动将该行复制到DONE表并然后删除该行。

我不确定onEdit() 是否有效。

注意:所有选项卡都是相同的。

这是我在论坛中找到的脚本:

function onEdit() {

  var app = SpreadsheetApp;
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetNameToWatch = ss.getSheetByName("Current")
  var columnNumberToWatch = 8;
  var valueToWatch = "DONE";
  var sheetNameToMoveTheRowTo = "OLD";

  //var ss = SpreadsheetApp.getActiveSpreadsheet();//this has already been declared
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getActiveCell();

  if (sheet.getName() == "Current" && range.getColumn() == 8 && range
  .getValue() == "DONE") {
    var targetSheet = ss.getSheetByName("OLD");
    var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);

    sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(
      targetRange);
    sheet.deleteRow(range.getRow());
  }

}

【问题讨论】:

  • 欢迎来到Stack OverflowonEdit 在编辑任何工作表(选项卡)时触发。请展示您尝试使脚本适应您的需求。
  • 我现在实际上正在使用脚本,除了它只在单个选项卡上运行之外,整个脚本。我应该如何修改脚本,以便它可以在我的所有选项卡上运行,除了 DONE 选项卡?
  • 删除sheet.getName() == "Current" &&
  • 另外,我忘了告诉你,被监视的列有一个公式,当满足某些条件时,它会自动变为“已完成”。我不确定 onEdit() 是否是正确的函数。
  • 请编辑问题以添加所有相关详细信息。

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


【解决方案1】:

我知道您希望从不同的工作表中移动一些符合条件的行,并且每次修改电子表格时都需要它。如果我对您的问题的理解是正确的,那么您可以通过使用Range.getSheet() 捕获修改后的工作表来轻松修改代码以将event object 付诸实施。此时您的工作表已经有了一个变量,因此代码可以继续搜索 Completed 关键字,并在必要时将该行复制到 DONE 工作表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    相关资源
    最近更新 更多