@levatolctoy
Новичок, любитель

Как скриптом внести название листа в формулу?

Всем доброго времени суток.
Подскажите пожалуйста, что нужно исправить в скрипте.
Есть таблица в которой каждый день создают новый лист. Нужен скрипт, чтобы оператор вносил в ячейку на листе "Шаблон" название нового листа и запускал скрипт.
Создаётся копия листа "Шаблон" --переименовывается (название берет из ячейки которое заполнил оператор)--В листе "Отчёт" вставлял в формулу название вновь созданного листа .

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();
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
@DanLong
Попробуйте так:
spreadsheet.getCurrentCell().setFormula('=IFERROR(VLOOKUP($A3;'&zn&'!$A$1:$B$46;2;0);"0")');
А вот тут кавычки лишние иначе название будет не значение переменной а название переменной:
spreadsheet.getActiveSheet().setName(zn);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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