当前位置: 首页 > 知识库问答 >
问题:

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

方砚
2023-03-14

我有一个“排行榜”/“记分板”,共有四张表格,我需要根据第一个总分(第2列)和第三个总得分(第3列)进行自动排序。这些列在所有四张图纸上都是相同的。

过去,当记分牌仅限于一张纸时,我使用了一个非常简单的脚本,但后来我将其扩展到同一个文档中的不同纸页上的前十名、前四名和前二名。

我遇到的问题是:当脚本更新一个工作表时,其他工作表似乎完全停止工作;换句话说,脚本中断了。

我能得到一些建议吗?我已经在这个网站上尝试了几个脚本,我看到基本的一个已经成功了(但是脚本似乎坏了?)在下面。

  function sortOnEdit(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MAIN EVENT");
  sheet.sort(3, false).sort(2, false);
}

function sortOnEdit(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TOP TEN");
  sheet.sort(3, false).sort(2, false);
}

function sortOnEdit(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TOP FOUR");
  sheet.sort(3, false).sort(2, false);
}

function sortOnEdit(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TOP TWO");
  sheet.sort(3, false).sort(2, false);
}

理想情况下,当工作时,工作表实际上只是根据总分列对自己进行排序,总分是排序的“决胜局”。

如果有人能帮忙,我已经附上了一份我的工作表:

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

共有2个答案

谭坚诚
2023-03-14

试试这个:

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);
}
龙涵蓄
2023-03-14

尝试以下操作,而不是脚本:

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}
}}
 类似资料:
  • 我有这张表: 个人财务表 我使用此脚本对A列和B列进行“OneEdit”排序: 现在,我不想对A列进行排序,而是对其进行筛选,以便不显示选中的复选框: 想要过滤视图 似乎与和有关,但我真的搞不清楚。 有人能帮帮我吗? 谢谢

  • 我只希望脚本在“Trip 1”到“Trip 3”的工作表上运行。 这是我正在使用的脚本:

  • 我是新来的谷歌工作表脚本和卡住试图做以下事情。我有2列:C包含开始时间码,D包含结束时间码。第三列(F)包含从开始时间码和结束时间码产生的电影提示的长度。由于时间码来自脚本,因此包含结果的单元格不能导出为其他格式。因此,我试图创建第四列,将列F的结果打印为值。我设法写了一个小脚本,可以做到这一点。它看起来像这样: 问题是,当我编辑C或D中的任何时间码时,它不会自动执行。 所以我试了一下: 它没有给

  • 问题内容: 我创建了一个redis lua脚本来执行基于关键数据类型的命令: 每次执行时,它都会返回null。请帮助纠正脚本。 问题答案: 对响应的返回形式如下表:(如果类型为字符串,则返回) 因此,为了正确检查,您应该将代码更改为: 其余代码将正常运行。 问题是这样的:TYPE命令是少数几个返回“简单字符串”或“状态” redis答复的命令之一(有关响应类型,请参见redis协议规范)。在red

  • 问题内容: 我正在尝试学习react.js,但被困在“ Hello World”脚本中。 我的index.html: 和src / helloworld.js: 当我把这个代码里面的文件,它工作正常,但是当我将其移动到单独的文件中我得到的空白页,并控制台错误: 怎么了 问题答案: 您收到该错误的原因是: 您已经从本地文件系统(例如通过双击)加载了,而不是通过Web服务器加载了 JSX转换器是脚本的

  • 问题内容: 我有一个非常简单的JTable,我想按列0升序对其进行排序。代码非常简单。但是它不能正确地对行进行排序。我不知道怎么了。以下是我的代码: 这是我运行程序时的结果 结果: 任何帮助将不胜感激。结果附后。提前致谢。 问题答案: 从DefaultTableModel的文档中: 警告:DefaultTableModel返回Object的列类。当将DefaultTableModel与TableR