Как автоматически вставить строку выше после того, как строка была отредактирована - PullRequest
0 голосов
/ 14 апреля 2020

Так что это макет данных, которые у меня есть в настоящее время.

Я хотел сдвинуть столбцы от A до D всякий раз, когда я добавлял запись в A2. По сути, я бы всегда оставлял пустую верхнюю строку для столбцов А-D, где данные будут вводиться каждый раз.

File Data

Я как-то выяснил, как вставить полную строку с этим кодом. Однако, поскольку он добавляет полную строку, он также перемещает всю легенду вниз, и я хочу сохранить ее там, где она есть.

function onEdit(e) {

  var sheet = SpreadsheetApp.getActive().getSheetByName("TEST");

  var editedRange = e.range;

  if (editedRange.getA1Notation() === "A2") {

      sheet.insertRowBefore(2);
  }
}

Как мне изменить функцию insertRowBefore? Я довольно новичок в этом и все еще учусь, поэтому я ценю каждую помощь.

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

В этом случае вы не хотите вставлять строку, вы хотите вставить определенное количество ячеек. Вы можете использовать метод .insertCells(shiftDimension) класса Range. shiftDimension может быть COLUMNS или ROWS. COLUMNS сместит ваши ячейки по горизонтали, а ROWS сместит их по вертикали.

Пример:

// First you will have to select the range where you want to insert the cells:
var range = sheet.getRange("A2:D2");

// Then call the function with Dimension ROWS to shift the cells down
range.insertCells(SpreadsheetApp.Dimension.ROWS);

Ссылка:

Range insertCells (shiftDimension)

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

Pl. организуйте свои данные в две вкладки (одна для данных, а другая для легенды).

Добавьте новую строку внизу, чтобы повысить скорость, поскольку смещение всех данных занимает больше времени.

Данные легенды могут быть легко отображены в листе данных с помощью ArrayFormula.

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