Sorting 自动排序不能在一个Google工作表中的多个工作表上工作

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()

我希望表2(标题为“托管交易”)按日期自动排序,表1(标题为“贷款查询”)按姓氏自动排序。两张表都在一张谷歌表中。我已经找到了下面的脚本,我对它进行了轻微的修改,它在第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 } );
  }
}
尝试:

测试电子表格:

 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');