Google工作表-在多个工作表上对特定范围内的2列进行自动排序



我一直在寻找一种在Google工作表上编写自动排序脚本的方法:

  • 仅适用于特定范围(A35:I911),但适用于主Google工作表中的所有工作表。
  • 首先排序A列(发布日期),其次排序B列(发布时间)。
  • 在编辑该范围内的任何单元格时发生(A35:I911)。

我试了下面的代码,但它不能正常工作:

function onEdit(event) {
var postDate = 1;
var postTime = 2;

var sheet = event.source.getActiveSheet();
var tableRange = "A35:I911";
var range = sheet.getRange(tableRange);

range.sort([
{column: postDate, ascending: true},
{column: postTime, ascending: true}
]);
}

提前感谢!

这是一个链接到编辑版本的谷歌工作表:https://docs.google.com/spreadsheets/d/1NUy6aY-lEA66UFXg4Yx4mXsTgFvj5g2Dhv4jToYsQnw/edit?usp=sharing)

修改点:

  • 虽然从你的问题中,不幸的是,我无法理解but it will not work properly,当我看到你的样本电子表格时,似乎在"2021年3月"的表中最大行是910。我想这可能是你们问题的原因。
  • 当单元格"A35: 911"是经过编辑的,在你的情况下,我想当单元格"A35: b911"时编辑后,运行脚本可能是合适的。因为即使当细胞"C35: 911">
  • 并且,从您的示例脚本中,我认为您可能不想在表单"概述"时运行该脚本。是编辑。

当上面的点被反射到脚本中时,它变成如下所示:

修改脚本:

function onEdit(event) {
var range = event.range;
var sheet = event.source.getActiveSheet();
if (sheet.getSheetName() == "Overview" || range.rowStart < 35 || range.rowStart >= 911 || range.columnStart > 2) return;
var postDate = 1;
var postTime = 2;
var tableRange = sheet.getMaxRows() < 911 ? "A35:I" + sheet.getLastRow() : "A35:I911";
var range = sheet.getRange(tableRange);
range.sort([
{column: postDate, ascending: true},
{column: postTime, ascending: true}
]);
}
  • 当您想要运行脚本时,请编辑单元格"A35: 911">
  • 当您想在单元格"A35: 911"时运行脚本时,请修改range.columnStart > 9

引用:

  • 简单触发
  • getMaxRows ()

相关内容

  • 没有找到相关文章

最新更新