Моя цель - автоматизировать добавление 10 строк в Google Sheet, используемое некоммерческой организацией, а затем реплицировать последовательности формул, необходимые во вновь создаваемых строках. У меня был весь код, работающий, чтобы выполнить задачу и не допустить, чтобы пользователи испортили формулы электронных таблиц, когда они вставляют строки вручную. Однако время выполнения кода истекло из-за количества строк в электронной таблице с использованием цикла getRange (). Мой новый подход состоит в том, чтобы перейти к именованной ячейке в качестве отправной точки вместо действительно медленного поиска в циклической ячейке.
Я создал имя "EndData", прочитал все, что я могу найти в Интернете, опробовал и ошибочный синтаксис в течение нескольких часов, чтобы ввести диапазон named_cell в myrange, а затем активировать диапазон на рабочем листе ...
Вот текущая попытка кодирования (при которой курсор остается в верхней части столбца, а
"Ошибка типа: не удается найти функцию getRangeByName в объектном листе. (Строка 170, файл" macros ")"
//Get EOD range, select, index up 3 rows to start row insertions
function getEOD() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
Logger.log(ss); //lOG is not helpful, says, "sheet", not SheetName
var MyRange = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRangeByName("EndData");
Logger.log(MyRange); //lOG is not helpful, says, "Range", not RangeAddress
//Activate the named cell, moves with the spreadsheet
MyRange.activate();
};
После того, как я обратился за помощью, появилась новая идея, Вот рабочий код, который выполняет работу:
//Get EOD range, select, index up 3 rows to start row insertions
function getEOD() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
//Logger.log(ss); //lOG is not helpful, says, "sheet", not SheetName
var rg = SpreadsheetApp.getActiveSpreadsheet().getRangeByName('EndData');
if (rg != null) {
Logger.log(rg.getNumColumns());
}
//Logger.log(rg); //lOG is not helpful, says, "Range", not RangeAddress
//Referenced the Named the EOD cell
//Future, Trying to create a debug status bar
//SpreadsheetApp.getActiveSpreadsheet().toast("looking at row" & i "now")
//Activate the named cell, which moves with spreadsheet growth, down
rg.activate();
//Uncomment for testing purposes, places a Yes on the row 4 columns over
//sheet.setActiveRange(sheet.getRange(0, 4)).setValue('Yes');
//turned off durning testing, writes in data range with this trial code
//Reposition from named cell to insert lines location
ss.getRange(sheet.getCurrentCell().getRow() -2, 1, 1,
sheet.getMaxColumns()).activate();
//Insert ten lines, copy and paste special formulas only
Insert_10_Lines()
//https://stackoverflow.com/questions/59772934/get-range-from-
getrangebyname-activate-range
};