Добавить пустые строки или заголовок между уникальными значениями в сортировке - PullRequest
1 голос
/ 02 октября 2019

Я извлекаю данные из вкладок на листе и помещаю их в одну вкладку, используя "compilation.sort (6, true);"

Он извлекает данные, но было бы здорово, если быбыл способ добавить строки во время сортировки, а не после. Есть ли способ вставить строки или даже заголовок между уникальными значениями сортировки?

Я пытался: "compilation.sort (6, true) .insertRowAfter (i, 1);"без успеха.

What I Have:

Row 1     |  Row 2 |  Row 3
---------  -------   -------
Pasta     | Sauce  |    3
Pasta     | Sauce  |    4
Pasta     | Sauce  |    5
Pizza     | Sauce  |    10
Pizza     | Sauce  |    11
Pizza     | Sauce  |    12
Spaghetti | Sauce  |    9



What I am looking for:

Row 1     |  Row 2 |  Row 3
---------  -------   -------
Pasta     | Sauce  |    3
Pasta     | Sauce  |    4
Pasta     | Sauce  |    5


Pizza     | Sauce  |    8
Pizza     | Sauce  |    11
Pizza     | Sauce  |    12


Spaghetti | Sauce  |    9 

1 Ответ

3 голосов
/ 02 октября 2019

Для активного листа вы можете использовать

function runSample2() {
  /**
   * @type {conditionCallback}
   */
  var cb;

  cb = function(row, i, values) {
    // Returns true if it's not the first row,
    // the first cell of a row does not equal one of previous row
    // and there is no an empty row before
    return (
      values[i - 1] &&
      values[i - 1][0] !== row[0] &&
      values[i - 1].join('') !== ''
    );
  };
  var sheet = SpreadsheetApp.getActiveSheet();
  insertRowBeforeByCondition_(sheet, cb);
}

function insertRowBeforeByCondition_(sheet, condition) {
  var dataRange = sheet.getDataRange();
  var values = dataRange.getValues();
  var i = values.length;
  while (i-- > 0)
    if (condition(values[i], i, values)) sheet.insertRowBefore(i + 1);
  return sheet;
}

enter image description here

На основе фрагмент .

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