Sorting 自动排序不能在一个Google工作表中的多个工作表上工作
我希望表2(标题为“托管交易”)按日期自动排序,表1(标题为“贷款查询”)按姓氏自动排序。两张表都在一张谷歌表中。我已经找到了下面的脚本,我对它进行了轻微的修改,它在第2页上的效果非常好,可以按日期自动排序Sorting 自动排序不能在一个Google工作表中的多个工作表上工作,sorting,google-sheets,Sorting,Google Sheets,我希望表2(标题为“托管交易”)按日期自动排序,表1(标题为“贷款查询”)按姓氏自动排序。两张表都在一张谷歌表中。我已经找到了下面的脚本,我对它进行了轻微的修改,它在第2页上的效果非常好,可以按日期自动排序 //Updates sort for range automatically function onEdit(event){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet()
//Updates sort for range automatically
function onEdit(event){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var editedCell = sheet.getActiveCell();
var columnToSortBy = 7;
var tableRange = "A3:T99"; //range to be sorted
if(editedCell.getColumn() == columnToSortBy){
var range = sheet.getRange(tableRange);
range.sort( { column : columnToSortBy, ascending: true } );
}
}
但是,我希望第一张工作表按照第2列中的姓氏自动排序,而不是脚本所指的第7列。值得一提的是,我对脚本做了以下更改,并在下面的脚本中添加了按姓氏排序的脚本,该脚本在第1页的第2列中运行良好
//Updates sort for range automatically
function onEdit(event){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var editedCell = sheet.getActiveCell();
var columnToSortBy = 2;
var tableRange = "A3:T99"; //range to be sorted
if(editedCell.getColumn() == columnToSortBy){
var range = sheet.getRange(tableRange);
range.sort( { column : columnToSortBy, ascending: true } );
}
}
但问题是,通过这样做,表2中自动按日期排序的另一个脚本现在已被禁用
我还尝试在每个工作表中创建一个名称范围,并将NamedRange1和NameRange2放在脚本的表范围部分。它没有改变任何事情。工作表1仍按姓氏排序,工作表2未排序
//Updates sort for range automatically
function onEdit(event){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var editedCell = sheet.getActiveCell();
var columnToSortBy = 2;
var tableRange = "NamedRange1"; //range to be sorted
if(editedCell.getColumn() == columnToSortBy){
var range = sheet.getRange(tableRange);
range.sort( { column : columnToSortBy, ascending: true } );
}
}
尝试:
测试电子表格:
https://docs.google.com/spreadsheets/d/13vveA0n4w84yQ71no7LgGonz_wLE7H_RA1ocDOtLZPQ/edit?usp=sharing
我建议改用
getSheetByName
方法:
例如:
var ss = SpreadsheetApp.getActiveSheet().getSheetByName('Deals in Escrow');
您应该为每个函数使用getSheetByName,而不是getActiveSheet?抱歉,不,它作为附加方法出现在getActiveSheet之后,例如getActiveSheet()。getSheetByName-im在飞机上lol,以便我可以在遇到支持wifi的标高时查看:)我在运行该代码时收到此错误消息;TypeError:无法从未定义中读取属性“source”。(第3行,文件“按姓氏排序”)我注意到您的测试电子表格不会在固定日期自动排序。很抱歉。好的,它在两张表上都起作用,但是当我使用你的代码时,我发现上面的错误。我删除了我的第二个自动排序代码,并从测试电子表格中将我的第一个脚本更改为你的。它请求权限,我给了它,然后我得到了这个消息;TypeError:无法从未定义中读取属性“source”。(第3行,文件“代码”)我运行它,得到以下结果:TypeError:在对象表中找不到函数getActiveSheet。(第4行,文件“按姓氏排序”)
var ss = SpreadsheetApp.getActiveSheet().getSheetByName('Deals in Escrow');