@Bogdan9999
Дизайнер косящий под разработчика

Протягивание формулы draggDownFormulas скриптом App Script в гугл таблице?

Доброго времени суток
Есть простая функция "протягивающая" формулы вниз (взятая отсюда) до последней заполненной строки.
Вопрос, как можно ее повторить, в рамках той-же функции, так чтоб заполнялся не один столбец (например "J"), а и соседний (например "K"). То есть по одному вызову, формула протягивалась в двух столбцах, а не одном.

Попытка написать массив вида (3, 7, 2, 2) - результата не принесли, просто продублировать с другими значениями - выдает ошибку.

function run2() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const base = sheet.getRange('J3:J');
  const colFormula = sheet.getRange('J3');
  draggDownOneFormula_(base, colFormula);
}

function draggDownOneFormula_(base, colFormula) {
  const baseValues = base.getValues();
  const lastBase =
    baseValues.length - baseValues.reverse().findIndex(row => row[0] !== '');
  const colFormulaFormula = colFormula.getFormula();
  colFormula
    .getSheet()
    .getRange(base.getRow(), colFormula.getColumn(), lastBase + 1)
    .setFormula(colFormulaFormula);
}
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Sheets
Google Products Expert
К сожалению, вам придется указывать каждый раз новые формулы для "протягивания"

function run() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const base = sheet.getRange('I3:I');
  const colFormula = sheet.getRange('J3');
  draggDownFormulas_(base, colFormula);
  const colFormula2 = sheet.getRange('K3');
  draggDownFormulas_(base, colFormula2);
}


Ну, или более продвинутый вариант

function runBulk() {
  const formulasCells = ['J3', 'K3', 'M3'];
  const sheet = SpreadsheetApp.getActiveSheet();
  const base = sheet.getRange('I3:I');
  formulasCells.forEach((cell) => {
    const colFormula = sheet.getRange(cell);
    draggDownFormulas_(base, colFormula);
  });
}


Уверен, что при хорошем рефакторинге можно будет "решить" некоторые особенности "протягивания".
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы