首页 > 解决方案 > 如何使用 onEdit 功能观看多个标签

问题描述

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

例如,这是要观看的选项卡列表:

当 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());
  }

}

标签: google-apps-scriptgoogle-sheetstriggers

解决方案


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


推荐阅读