@Vadim1411

Как вставить строку по условию Google Apps Script?

Добрый день всем. Суть вопроса следующая: необходимо вставить пустую строку в колонке после каждого последнего повторяющегося значения. Значения в колонке заранее отсортированы. Значения могут быть любыми.

На входе имеем:

62a0c4f9acea0012528644.jpeg

Что должно получится в итоге:

62a0c5dfdc580864925067.jpeg

Вот что удалось написать:

function test3 (){

  let ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Лист5');
  let lRow = ss.getLastRow();
  let lCol = ss.getLastColumn();
  let range = ss.getRange(3, 2, lRow - 2, 1);
  let getVal = range.getValues();

  let rowNumFirst = 3;
  let rowNumLast = getVal.length -1;
  for(let row = 0; row < getVal.length -1; row++){
    for(let cel = 0; cel < getVal[0].length; cel++){
      if(getVal[row][cel] != getVal[row+1][cel] && getVal[row][cel] != ''){
        let insRow = row + rowNumFirst;
        ss.insertRowAfter(insRow);
      }
    }
  }
};


С вставкой строк проблемы. Пустые строки вставляются не там где надо, хотя номера строк консолем выводятся корректные. Прошу помощи в решении данной задачи. Так же прошу разъяснить, что я делаю не верно. Не судите строго. Совсем недавно открыл для себя JS и GAS.
  • Вопрос задан
  • 1440 просмотров
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Попробуйте это решение https://qna.habr.com/q/1160184#answer_2175980

Пример добавил в Таблицу в том ответе. Решение, скорее всего

function run2() {
  const book = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = book.getSheetByName('Пример 2');
  sheet.sort(5);
  const values = sheet.getDataRange().getValues();
  const buffer = {
    value: values[values.length - 1][1]
  };
  values.forEach((_, i, arr) => {
    const j = arr.length - 1 - i;
    const value = arr[j][1];
    if (value !== buffer.value) {
      sheet.insertRowAfter(j + 1);
      buffer.value = value;
    }
  });
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 03:54
1500 руб./за проект
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект