【发布时间】:2017-10-04 03:44:43
【问题描述】:
我有一个脚本,它会创建一个新的工作表,其名称基于月份年份,例如 Oct-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 年 12 月,按钮将创建一个名为 Jan- 的新工作表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);
}
这有意义吗? 谁能告诉我如何进行?
【问题讨论】:
标签: javascript google-sheets google-sheets-api