我正在寻找一个脚本,该脚本将创建一个菜单项,该菜单项将允许我将创建的模板工作表复制到新的Google工作表文件中,提示我要在该文件中添加多少个模板副本,并重命名新文件中每个副本的标签。在复制过程中,还需要保留原始模板的权限。
我有一个针对我的业务的现金处理模板表格,我需要为每个需要在选项卡名称中使用“月份和日期”的月份创建新文件。我包括了模板文件的图片以及所需的结果。图片是Excel文件,但是我已经将它们迁移到了Google表格中。
Result after script has been run
示例:
包含模板文件的脚本将在其中运行: 标签名称:模板表
将在其中创建模板副本的新图纸文件: 标签名称:6月1日-6月30日
我发现此脚本可以执行我想要的一些操作。它将根据工作表ID将工作表复制到新的工作簿中,但是我真正需要的是脚本创建一个新文件,并在该文件中创建模板工作表的多个副本,而不仅仅是一个。
function copySheets() {
var copySheetsContaining = Browser.inputBox("Copy sheets with names containing:");
var destinationId = Browser.inputBox("Enter the destination spreadsheet ID:");
if (sheetMatch(copySheetsContaining)){
for (var i = 0; i < sheetsCount; i++){
var sheet = sheets[i];
var sheetName = sheet.getName();
Logger.log(sheetName);
if (sheetName.indexOf(copySheetsContaining.toString()) !== -1){
Logger.log("COPY!");
var destination = SpreadsheetApp.openById(destinationId);
sheet.copyTo(destination);
}
}
successAlert('copied')
} else {
noMatchAlert();
}
}
// determine if any sheets match the user input
function sheetMatch(sheetMatch){
for (var i = 0; i < sheetsCount; i++){
var sheetName = sheets[i].getName();
if (sheetName.indexOf(sheetMatch.toString()) !== -1){
return true
}
}
return false
}
// alert if no sheets matched the user input
function noMatchAlert() {
var ui = SpreadsheetApp.getUi();
var result = ui.alert(
'No Sheets Matched Your Input',
"Try again and make sure you aren't using quotes.",
ui.ButtonSet.OK);
}
// alert after succesful action (only used in copy)
function successAlert(action) {
var ui = SpreadsheetApp.getUi();
var result = ui.alert(
'Success!',
"You're sheets were " + action + " successfully.",
ui.ButtonSet.OK);
}