我一直在寻找一种在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 ()