Проблема Appl Script как исправить ошибку?

Рейтинг: 0Ответов: 2Опубликовано: 31.03.2023

Пишу код в Apps Script для гугл таблицы где формула должна вставляться во все ячейки где есть значение но выдаёт ошибку #ИМЯ? при атоматической вставке

function on() {
  var list = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("dd");
  
  list.getRange("G2").setFormula("СУММЕСЛИ('отгрузка'!$A$2:$A;$E2;'отгрузка'!$D$2:$D)");
  var ks= list.getLastRow();
  var diap = list.getRange(2,7,ks-1);
  list.getRange("G2").copyTo(diap);
}

Ответы

▲ 0Принят
function on() {
  const list = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("dd");

  list
    .getRange("G2")
    .setFormula(`=SUMIF('отгрузка'!\$A:\$A;\$E2;'отгрузка'!\$D:\$D)`);

  list.getRange("G2").copyTo(list.getRange(2, 7, list.getLastRow() - 1));
}
▲ 0
/**
 * Протянуть формулу по столбцу
 * @param {SpreadsheetApp} spreadsheet книга
 * @param {string} sheetName название листа
 * @param {string} formulaStarCell ячейка с формулой, пример: "С2"
 * @param {string} [columnEndRow] столбец для поиска последней строки, пример: "B"
 */
function stretchFormula({
  spreadsheet,
  sheetName,
  formulaStarCell,
  columnEndRow = null,
}) {
  const sh = spreadsheet
    ? spreadsheet.getSheetByName(sheetName)
    : SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);

  let lr;
  if (columnEndRow) {
    const lastRow = (sh, col) => {
      // до последней заполненной ячейки по конкретному столбцу
      const values = sh.getRange(col + ":" + col).getValues();
      return values.length - values.reverse().findIndex((row) => row[0] !== "");
    };
    lr = lastRow(sh, columnEndRow);
  } else lr = sh.getLastRow(); // до последней заполненной ячейки, по умолчанию

  sh.getRange(formulaStarCell)
    .activate()
    .autoFill(
      sh.getRange(
        `${formulaStarCell}:${formulaStarCell.replace(/\d/g, "")}` + lr
      ),
      SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES
    );
}