Всем доброго времени суток.
Подскажите пожалуйста, что нужно исправить в скрипте.
Есть таблица в которой каждый день создают новый лист. Нужен скрипт, чтобы оператор вносил в ячейку на листе "Шаблон" название нового листа и запускал скрипт.
Создаётся копия листа "Шаблон" --переименовывается (название берет из ячейки которое заполнил оператор)--В листе "Отчёт" вставлял в формулу название вновь созданного листа .
function new() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Шаблон'), true);
var zn = spreadsheet.getRange('B47').getValue();
spreadsheet.getRange('B47').activate();
spreadsheet.duplicateActiveSheet();
spreadsheet.getRange('B47').activate();
spreadsheet.getActiveSheet().setName('zn');
// переименовал лист
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Отчёт'), true);
spreadsheet.getRange('C:C').activate();
spreadsheet.getActiveSheet().insertColumnsBefore(spreadsheet.getActiveRange().getColumn(), 1);
spreadsheet.getActiveRange().offset(0, 0, spreadsheet.getActiveRange().getNumRows(), 1).activate();
spreadsheet.getRange('C2').activate();
spreadsheet.getRange(\'Шаблон\'!B47').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
// такое же имя присвоил столбцу в отчете
spreadsheet.getRange('D3').activate();
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('C3:D3'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('C3').activate();
spreadsheet.getCurrentCell().setFormula('=IFERROR(VLOOKUP($A3; здесь должно быль название листа!$A$1:$B$46;2;0);"0")');
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('C3:C48'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('C3:C48').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Шаблон'), true);
spreadsheet.getRange('B47').activate();
spreadsheet.getCurrentCell().setValue('Введите название листа и нажми создать лист');
spreadsheet.getRange('B48').activate();
Попробуйте так:
spreadsheet.getCurrentCell().setFormula('=IFERROR(VLOOKUP($A3;'&zn&'!$A$1:$B$46;2;0);"0")');
А вот тут кавычки лишние иначе название будет не значение переменной а название переменной:
spreadsheet.getActiveSheet().setName(zn);
Не работает.
После выполнения скрипта в строке формул пишет =0
Все переменные которые помещаются в кавычки перестают быть переменными.
Подскажите как обойти эту проблему.
может есть другой способ.
Кавычки убрал. Спасибо.
("=IFERROR(VLOOKUP($A3;'"+zn+"'!$A$1:$B$46;2;0);0)"); при таком варианте выдаёт синтаксическую ошибку
("=IFERROR(VLOOKUP($A3;"+zn+"!$A$1:$B$46;2;0);0)"); если оставить только двойные тоже не работает
('=IFERROR(VLOOKUP($A3;''+zn+''!$A$1:$B$46;2;0);"0")'); вариант две подряд одинарные кавычки тоже выдаёт синтаксическую ошибку