Простой скрипт сортировки в Google Sheets не работает - PullRequest
0 голосов
/ 10 мая 2019

У меня есть «таблица лидеров» / «табло», расположенная на четырех листах, для которой требуется автоматическая сортировка при обновлении сначала по общему счету (столбец 2), а затем по общему количеству убийств (столбец 3).Эти столбцы одинаковы на всех четырех листах.

В прошлом я использовал очень простой сценарий, когда табло было ограничено одним листом, но с тех пор я расширил его, чтобы получить десятку лучших, четверку лучших,и Top Two на отдельных листах одного и того же документа.

Проблема, с которой я сталкиваюсь: когда скрипт обновляет один лист, другие, кажется, выпадают, перестают работать полностью;другими словами, сценарий ломается.

Могу ли я получить совет?Я уже пробовал несколько сценариев с этого сайта, и основной, с которым я вижу некоторый успех (но, похоже, сценарий ломается?), Приведен ниже.

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

В идеале при работе листы будут буквальнопросто сортируйте себя по столбцу Total Score, где Total Kills является «нарушителем связей» для сортировки.

Я включил копию своего листа, если кто-нибудь мог бы помочь:

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

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

попробуйте это:

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);
}
0 голосов
/ 10 мая 2019

попробуйте что-нибудь подобное вместо ваших скриптов:

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}
}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...