У меня есть сценарий, который создает новый лист с именем на основе месяца-года, например, октябрь-2017, автоматически каждый новый месяц.
Но теперь я хотел бы иметь кнопку, с помощью которой я могу создавать новые листы с той же структурой, с именами, основанными на MMM-yyyy.
Мой первый сценарий создает новый лист только при изменении месяца, но теперь я намерен создать его, когда я сочту необходимым, нажав эту кнопку. Как создать кнопку - не проблема.
Итак, если раньше имя листа было основано на следующем коде,
function checkSheetName() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetName = formatDate(); // load the current 'Month-Year'
try {
ss.setActiveSheet(ss.getSheetByName(sheetName)); // try to set 'sheetName' as active sheet
} catch (e) { // if returns error,
createNewMonthSheet(); // creates a new sheet
}
function createNewMonthSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetName = formatDate(); // load the current 'Month-Year'
ss.insertSheet(sheetName, 2); // creates a new sheet on the left side, after 2 existing sheets
}
function formatDate() {
var monthNames = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
var monthNumber = Utilities.formatDate(new Date(), 'GMT+12:00', "M");
var yearNumber = Utilities.formatDate(new Date(), 'GMT+12:00', "yyyy");
return monthNames[monthNumber-1]+'-'+yearNumber;
}
теперь код должен использовать имя листа в качестве ссылки для нового имени, увеличивая дату и соблюдая реальный календарь, поэтому, если текущее имя листа - декабрь 2017 г., кнопка создаст новый лист с именем января-2018. Так что больше нет необходимости иметь отношение к новой команде Date, как мой предыдущий код.
Я начал новый код, но не знаю, как создать var nameOfNextMonth:
function createNewSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var currentMonth = ss.getActiveSheet().getName();
var nameOfNextMonth = **[currentMonth+1]**;
ss.setActiveSheet(ss.getSheetByName("template"));
var newSheet = ss.duplicateActiveSheet();
newSheet.activate();
ss.moveActiveSheet(0);
newSheet.setName(nameOfNextMonth);
}
В этом есть какой-то смысл? Может ли кто-нибудь дать мне представление, как действовать дальше?