我正在寻找一种对电子表格进行排序的方法。我环顾四周,找到了#34;编辑"功能,但我不完全确定如何使用它。它如何与谷歌脚本仅5分钟的运行时间一起工作,cellchange是否作为触发器? 我找到了以下代码:
function AutoSortOnEdit() {
var sheetNames = ["testsheet456", "testsheet457", "testsheet458"];
var ss = SpreadsheetApp.getActiveSpreadsheet();
sheetNames.forEach(function(name) {
var sheet = ss.getSheetByName(name);
var range = sheet.getRange(5, 1, sheet.getLastRow() - 1, sheet.getLastColumn());
range.sort({column: 1, ascending: true});
});
我个人会使用这个稍微修改过的版本:
function AutoSortOnEdit() {
var sheet = SpreadsheetApp.openById("...").getSheetByName("...");
var range = sheet.getRange(5, 1, sheet.getLastRow() - 1, sheet.getLastColumn());
range.sort({column: 1, ascending: true});
});
现在我想按字母顺序对第一行排序的表格进行排序。 我的问题是:
关心Jonny
编辑:最后我选择了我的slighlty修改版,因为onEdit毕竟不适合这种情况。
答案 0 :(得分:0)
是的,升序是按字母顺序排列的。此代码仅查找名为Sheet1的工作表中的更改,仅查找A列。该函数必须命名为OnEdit(而不是AutoSortOnEdit)。
function onEdit()
{
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var sheetName= sheet.getSheetName();
if(sheetName=="Sheet1"){ //sheet to run on edit
var editRange = sheet.getActiveRange();
var editRow = editRange.getRow();
var editCol = editRange.getColumn();
var lr = sheet.getLastRow()
var range = sheet.getRange("A1:A"+lr);//apply on edit to
var rangeRowStart = range.getRow();
var rangeRowEnd = rangeRowStart + range.getHeight()-1;
var rangeColStart = range.getColumn();
var rangeColEnd = rangeColStart + range.getWidth()-1;
if (editRow >= rangeRowStart && editRow <= rangeRowEnd
&& editCol >= rangeColStart && editCol <= rangeColEnd)
{
var range = sheet.getSheetByName(sheetName).getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn());//Assumes header row
range.sort({column: 1, ascending: true});
}}}
答案 1 :(得分:0)
简单事件触发器的执行时间限制为30秒。
onEdit() events必须简单地命名为onEdit()或onEdit(event)
onEdit可以使用一个表示触发它的event的变量,其中包括已编辑的范围。
工作表拥有它自己的sort()。如果您尝试对整个工作表进行排序,则使用它会更简单。
function onEdit(event){
if(event.range.getSheet().getName() == "Sheet1" && event.range.getColumn() == 1){//checks to see if the edited range was both on Sheet1 and column 1 (A)
event.range.getSheet().sort(1,true); //sort by first column
// event.range.getSheet().sort(1,false); //decending
}
}
可以通过扩展条件或aditional if语句来观看多个工作表。