该脚本多次将模板工作表复制到新文件中,并重命名选项卡

时间:2019-06-02 02:42:31

标签: google-apps-script

我正在寻找一个脚本,该脚本将创建一个菜单项,该菜单项将允许我将创建的模板工作表复制到新的Google工作表文件中,提示我要在该文件中添加多少个模板副本,并重命名新文件中每个副本的标签。在复制过程中,还需要保留原始模板的权限。

我有一个针对我的业务的现金处理模板表格,我需要为每个需要在选项卡名称中使用“月份和日期”的月份创建新文件。我包括了模板文件的图片以及所需的结果。图片是Excel文件,但是我已经将它们迁移到了Google表格中。

Template File

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);
}

0 个答案:

没有答案