新手:为 google 个工作表编写一个脚本,它将在所有工作表上 运行

Newbie: writing a script for google sheets that will run on all sheets

我在这方面是一个真正的新手(甚至不是)。我一生中从未编写过代码——只是从解释如何编写代码的网站上复制了以下代码。我有一个 google 文档,随着新数据的添加,我需要根据 C 列连续排序。这是我得到的代码:

function onEdit() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange(3, 1, sheet.getLastRow() - 2, sheet.getLastColumn());
  range.sort({column: 3, ascending: true});
}

部分有效,但我需要将其应用于文档中的所有 sheets/tabs。 提前致谢!

  • 您的代码包含 var sheet = SpreadsheetApp.getActiveSheet(); 行,其余代码基于 sheet - 因此它 运行 仅基于一个 sheet,即插入新数据时激活,因此执行编辑的数据
  • 相反,如果您想对所有 sheet 传播sheet中的每个编辑执行排序,则需要方法 getSheets() to retrieve all sheets of the spreadsheet as an array
  • 随后您需要loop通过数组将排序函数应用于每个sheet

样本:

function onEdit() {
  var sheets = SpreadsheetApp.getActive().getSheets();
  for (var i = 0; i < sheets.length; i++){
    var sheet = sheets[i];
    var range = sheet.getRange(3, 1, sheet.getLastRow() - 2, sheet.getLastColumn());
    range.sort({column: 3, ascending: true});
  }
}

重要提示:

onEdit 触发器仅检测人为编辑,例如键入文本。相反,如果您想在更改文档结构时触发触发器,例如插入一个新的空行(这不同于在现有空行的单元格中键入值),您需要通过 installable onChange trigger, see also here

替换 onEdit 触发器