Границы и формула сортировки называются значениями - PullRequest
0 голосов
/ 22 октября 2018

У меня есть ряд формул importrange на скрытом листе магазина.Различные таблицы «ищут» эти данные для отображения в таблице.Я установил простой скрипт для рисования границ при вводе новой строки данных.Это отлично работает.

Я добавил новую строку для сортировки данных, чтобы сначала появилась самая новая запись.Я бы просто добавил уравнение sort к поиску, но один элемент на листе был напечатан пользователем, и это было бы не в том месте, в то время как остальные перемещались.По этой причине, так как скрипт уже запущен, я добавил дополнительную строку.Я получаю ошибку Cell reference out of range (line 15, file "macros") и не понимаю, почему.

Вот мой код

function onEdit(){

  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange(6, 2, 35);
  var values = range.getValues().map(function(d){ return d[0] });
Logger.log(values);

  var index = values.indexOf("");
  Logger.log(index);


      var border = sheet.getRange(5, 2, index+1, 5);
      border.setBorder(true, true, true, true, true, true);

  range.sort({column : 1, ascending: true});

  }

РЕДАКТИРОВАТЬ

Я добавил ссылку на образец листа.Импортированные данные находятся на листе 16, я включил пример того, как данные сортируются только по математике.Когда вы смотрите на лист математики, дата возвращается в соответствующие столбцы.Есть комментарий, добавленный зрителем.Я пытаюсь отсортировать данные с помощью открытого сценария, чтобы сначала отображалась третья строка введенных данных, и все последующие записи данных также будут правильно отсортированы. пример

1 Ответ

0 голосов
/ 22 октября 2018

Здесь

var range = sheet.getRange(6, 2, 35);

вы получаете ячейки от строки 6, столбца B до строки 35, столбца B. И здесь

range.sort({column : 1, ascending: true});

Вы пытаетесь отсортировать столбец Aпо возрастанию в диапазоне выше.Вы должны установить column равным аргументу column в вашем range, например:

range.sort({column : 2, ascending: true});

Редактировать

Если вы хотите отсортировать строки данных поВ первом столбце вам нужно будет предоставить больше объектов сортировки в качестве параметров сортировки в одном массиве

var range               = sheet.getRange( "B6:F36" );
var firstColumnPosition = range.getColumn();
var lastColumnPosition  = range.getLastColumn();
var sortParameters      = [];

for ( var i = firstColumnPosition; i <= lastColumnPosition; i++ ) {
    sortParameters.push( { column:i, ascending:true } );
}

range.sort( sortParameters );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...