Почему этот скрипт приложений Google будет работать, только если я жестко закодирую диапазон? - PullRequest
0 голосов
/ 11 апреля 2020

Мне нужно сделать несколько листов в Google Do c, чтобы они постоянно сортировались по первому столбцу (отметке времени). Это кажется достаточно простым, и мой скрипт работает, но только если я жестко кодирую диапазон, как показано ниже ... Я пытаюсь выяснить, почему он не работает, когда я использую getLastRow () и getLastColumn (), чтобы дать ему диапазон ... см. закомментированный код ниже. Если я раскомментирую это, этот код больше не работает. Почему?

  var sheet = event.source.getActiveSheet();
  var editedCell = sheet.getActiveCell();
  var columnToSortBy = 1;
  var tableRange = "A2:Z99";
  if(editedCell.getColumn() == columnToSortBy && /^Form\sResponses/.test(sheet.getSheetName())){  
    var range = sheet.getRange(tableRange);
    /* WHY DOESN'T THIS WORK -- var range = sheet.getRange(2,1,sheet.getLastRow(), 
sheet.getLastColumn()-1); */
    range.sort( { column : columnToSortBy , ascending:false});
  };
};```


1 Ответ

0 голосов
/ 13 апреля 2020

Подход:

Используя функции .getLastColumn() и .getLastRow(), вы получите соответственно позиции последнего столбца и строки, которые имеют содержимое. Вы можете использовать эти позиции для динамического наращивания диапазона с помощью функции .getRange(row, column, numRows, numColumns).

Поскольку вы хотите получить диапазон "A2: Z99", это будет выглядеть следующим образом: .getRange(2,1,sheet.getLastRow()-1, sheet.getLastColumn());

Решение:

var sheet = event.source.getActiveSheet();
var editedCell = sheet.getActiveCell();
var columnToSortBy = 1;
//var tableRange = "A2:Z99";
if(editedCell.getColumn() == columnToSortBy && /^Form\sResponses/.test(sheet.getSheetName())){  
   //var range = sheet.getRange(tableRange);
   var range = sheet.getRange(2,1,sheet.getLastRow()-1, sheet.getLastColumn()); // A2:Z99
   range.sort( { column : columnToSortBy , ascending:false});
}; 

Ссылки:

Лист getRange (строка, столбец, числа, нули)

Лист getLastRow ()

Лист getLastColumn ()

...