我自己仍在学习GoogleApp脚本。任何人都可以指导我正确的方向如何编辑下面的脚本,以便不是按照当前日期命名新工作表,而是从Sheet1的A列中取名,然后重命名。
请注意,我会继续在列中的新单元格中使用新名称更新A列。
提前感谢您的帮助!
这是我的脚本仅适用于日期:
function onOpen() {
var menu = [{name: "Add", functionName: "newSheet"}];
SpreadsheetApp.getActiveSpreadsheet().addMenu("Sheet", menu);
}
function newSheet() {
var sheetName = formatDate();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var templateSheet = ss.getActiveSheet();
ss.insertSheet(sheetName, ss.getSheets().length, {template: templateSheet});
}
function formatDate() {
var month, day, d = new Date();
month = ('0'+(d.getUTCMonth()+1)).slice(-2);
day = ('0'+d.getUTCDate()).slice(-2);
return d.getUTCFullYear()+'-'+month+'-'+day;
}
答案 0 :(得分:2)
下面的代码从A2获取col A中的所有值:A,过滤它们以忽略数据中的空白单元格,然后检查表单是否已经存在,如果它们已经存在则没有任何反应。如果工作表不存在,则复制模板工作表,重命名并将其放在工作表标签的末尾。
function onOpen() {
var menu = [{
name : "Add",
functionName : "newSheet"
}
];
SpreadsheetApp.getActiveSpreadsheet().addMenu("Sheet", menu);
}
function newSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var templateSheet = ss.getActiveSheet();
var sheet1 = ss.getSheetByName("Sheet1")
var getNames = sheet1.getRange("A2:A").getValues().filter(String).toString().split(",");
for (var i = 0; i < getNames.length; i++) {
var copy = ss.getSheetByName(getNames[i]);
if (copy) {
Logger.log("Sheet already exists");
} else {
templateSheet.copyTo(ss).setName(getNames[i]);
ss.setActiveSheet(ss.getSheetByName(getNames[i]));
ss.moveActiveSheet(ss.getNumSheets());
}
}
}
答案 1 :(得分:1)
看看这是否适合您。
function onOpen() {
var menu = [{name: "Add", functionName: "newSheet"}];
SpreadsheetApp.getActiveSpreadsheet().addMenu("Sheet", menu);
}
function newSheet()
{
var sp = SpreadsheetApp.getActiveSpreadsheet();
var sheetnameobj = sp.getSheetByName("Sheet1");
//You can place a for loop here, if you want to create multiple sheets
var newsheetname = sheetnameobj.getRange("A2").getValue();//Get Name of Your New Sheet From Column A of Sheet1
sp.insertSheet(newsheetname);
}