我希望表2(标题为“托管交易”)按日期自动排序,而工作表1(标题为“贷款查询”)按姓氏自动排序。两张表都在一张Google表格中。我找到了以下脚本,并稍微修改了它,它在Sheet 2上工作得很好,可以按日期自动排序;
//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 } );
}
}
答案 0 :(得分:0)
尝试:
function onEdit(event){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = event.source.getActiveSheet().getName()
var editedCell = event.range.getSheet().getActiveCell();
if(sheet=="Loan Inquiries"){
var columnToSortBy = 2;
var tableRange = "A3:T99"; //range to be sorted
if(editedCell.getColumn() == columnToSortBy){
var range = ss.getActiveSheet().getRange(tableRange);
range.sort( { column : columnToSortBy, ascending: true } );
}}
else if(sheet=="Deals in Escrow"){
var columnToSortBy = 7;
var tableRange = "A3:T99"; //range to be sorted
if(editedCell.getColumn() == columnToSortBy){
var range = ss.getActiveSheet().getRange(tableRange);
range.sort( { column : columnToSortBy, ascending: true } );
}
else{return}
}}
测试电子表格:
https://docs.google.com/spreadsheets/d/13vveA0n4w84yQ71no7LgGonz_wLE7H_RA1ocDOtLZPQ/edit?usp=sharing
答案 1 :(得分:0)
我建议改用getSheetByName
方法:
例如:
var ss = SpreadsheetApp.getActiveSheet().getSheetByName('Deals in Escrow');