Проблема Appl Script как исправить ошибку?
Пишу код в 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);
}
Ответы (2 шт):
Автор решения: Михаил Носаев
→ Ссылка
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));
}
Автор решения: Михаил Носаев
→ Ссылка
/**
* Протянуть формулу по столбцу
* @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
);
}