Я создаю электронную таблицу для сортировки событий на основе введенной даты.Я успешно получил программу для добавления нового листа с содержимым события, которое я хочу скопировать, но я не смог добавить в сценарий, чтобы разрешить два варианта.Моя цель - сделать так:
Вариант 1. Лист уже существует.A2: ячейки D2 будут скопированы с листа шаблона на лист с той же датой, что и в ячейке A2.,A2: D2 будет удален из листа шаблона, чтобы оставить пустой холст.
Вариант 2: Лист не существует.Используя лист шаблона в качестве шаблона для нового листа, вся информация будет скопирована с указанием даты в A2 в качестве имени этого нового листа.,A2: D2 будет очищен от листа шаблона, чтобы оставить пустой холст.
Я попытался использовать оператор try catch, пытаясь найти лист, и если это не сработало, создание уловалист с новым именем.Я получаю сообщение об ошибке "Лист с именем" ____ "уже существует".хотя я не совсем понимаю, почему, так как я получаю эту ошибку, с перехватом это не происходит.
Я также пробовал оператор if else с похожей идеей, заявляя, что если getSheetByName не сделалработать, он будет создавать лист, иначе он установит новый активный лист.В этом есть та же ошибка.
Что касается моего кода, я покажу его, но я должен предупредить, что он немного коренастый (по какой-то причине он не будет подтверждать переменные внутри оператора try catch, если толькоЯ повторяю их).
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
ss.setActiveSheet(ss.getSheets()[0])
var range = sheet.getRange("A2");
var A2 = range.getValue();
var templateSheet = ss.getActiveSheet();
var value = sheet.getRange("A2").getValue();
var val = Utilities.formatDate(new Date(A2), "GMT+1", "MM/dd/yyyy");
range.setValue(new Date(A2)).setNumberFormat("MM/dd/yyyy");
A2 = SpreadsheetApp.getActiveSheet().getRange('A2').getValue();
try {
ss.setActiveSheet(ss.getSheetByName(A2));
var sheet1 = ss.getSheetByName("GUI");
var sheet2 = ss.getSheetByName(A2);
sheet1.getRange("A2:D2").copyTo(sheet2.getRange(sheet2.getLastRow()+1,1,1,4), {contentsOnly:true});
ss.setActiveSheet(ss.getSheets()[0]);
sheet.getRange("A2:D2").clearContent();
} catch (e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var A2 = range.getValue();
var templateSheet = ss.getActiveSheet();
var val = Utilities.formatDate(new Date(A2), "GMT+1", "MM/dd/yyyy");
ss.insertSheet(val, ss.getSheets().length, {template: templateSheet});
ss.setActiveSheet(ss.getSheets()[0]);
sheet.getRange("A2:D2").clearContent();
}
}
Если у кого-то есть идеи, почему это не работает, я хотел бы знать.Спасибо!