Google表格上的简单排序脚本不起作用

时间:2019-05-09 21:09:41

标签: sorting google-apps-script google-sheets

我在四张纸上都有一个“排行榜” /“记分板”,每当按总分(第2列)然后按总杀死数(第3列)进行更新时,我都需要进行自动排序。这些列在所有四张纸上都是相同的。

过去,当记分板仅限于一张纸时,我使用了一个非常简单的脚本,但此后我将其扩展为在同一文档的不同纸上具有前十名,前四名和前两名。 >

我遇到的问题是:当脚本更新一张纸时,另一张纸似乎完全停止工作。换句话说,脚本会中断。

能否请教我一些建议?我已经从该站点尝试了几种脚本,下面是我看到的一些基本脚本(但是脚本似乎坏了吗?)。

protect_from_forgery with: :null_session

理想情况下,工作时,工作表将按字面意思按“总分”列进行排序,而“总杀死数”则是进行排序的“决胜局”。

如果有人可以帮忙,我会提供一份工作表副本:

https://docs.google.com/spreadsheets/d/1a6XGv09TPt5Vnxqfcd1Xba3TGMis5OelGxlvzNDl5CY/edit?usp=sharing

2 个答案:

答案 0 :(得分:0)

尝试类似这样的方法而不是您的脚本:

function onEdit(event){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = event.source.getActiveSheet().getName()
  var editedCell = event.range.getSheet().getActiveCell();
if(sheet=="Sheet1"){
  var columnToSortBy = 2;
  var tableRange = "A3:C10"; //range to be sorted
  if(editedCell.getColumn() == columnToSortBy){   
    var range = ss.getActiveSheet().getRange(tableRange); 
    range.sort( { column : columnToSortBy, ascending: true } );
  }}
  else if(sheet=="Sheet2"){
    var columnToSortBy = 7;
    var tableRange = "A3:C10"; //range to be sorted
  if(editedCell.getColumn() == columnToSortBy){   
     var range = ss.getActiveSheet().getRange(tableRange); 
    range.sort( { column : columnToSortBy, ascending: true } );
  }
  else{return}
}}

答案 1 :(得分:0)

尝试一下:

function sortOnEdit(e) {
  var sh=e.range.getSheet();
  var name=sh.getName();
  var incl=['MAIN EVENT','TOP TEN','TOP FOUR','TOP TWO'];
  if(incl.indexOf(name)==-1) return;
  sh.sort(3,false).sort(2,false);
}