Google apps script 使用其他电子表格中的模板创建图纸

Google apps script 使用其他电子表格中的模板创建图纸,google-apps-script,google-drive-api,Google Apps Script,Google Drive Api,这是电子表格 下面是我使用它的地方: function getMembersFileSpreadsheet(name, folder){ var folderIterator = folder.getFilesByName(name +"-"+"Member"); if(folderIterator.hasNext()){ return folderIterator.next(); } else { var sheet = SpreadsheetApp.

这是电子表格

下面是我使用它的地方:

function getMembersFileSpreadsheet(name, folder){

  var folderIterator = folder.getFilesByName(name +"-"+"Member");
  if(folderIterator.hasNext()){
    return folderIterator.next();
  } else {      
    var sheet = SpreadsheetApp.openById("someID").getSheetByName('Part-1');
    var idOfFile = DriveApp.getFileById(Drive.Files.insert({"title":name+"-"+"Member", "parents":[{"id": folder.getId()}], 'mimeType':"application/vnd.google-apps.spreadsheet"},{'convert':true}).id);
    var ss = SpreadsheetApp.openById(idOfFile.getId());

    // this method works
    ss.insertSheet('Member Info', 0);
    // works
    ss.insertSheet('Member Progress',1); 
    // BREAKS, does not insert a sheet here, breaks.
    ss.insertSheet('Part 1', 2, {template: sheet});       
    ss.insertSheet('Part 2',3);
    ss.insertSheet('Part 3',4);
    ss.insertSheet('Part 4',5);
    ss.deleteSheet(ss.getSheetByName('Sheet1'));

    return ss;
  }
}
请注意我对代码中断位置的评论。插入前两个工作表(当我省略模板参数时)。当我包含模板参数时,执行失败,我新创建的电子表格中有3张表,“成员信息”、“成员进度”和“表1”

当我单独使用模板参数时(在较小的应用程序中,特别是在测试如何使用它以及它是否工作时),它工作得很好

有什么想法吗,有人经历过吗?如果我在当前代码中省略了template参数,则所有工作表都会正确插入


我希望能够使用模板格式化每张工作表。

您正在尝试使用另一个电子表格中的工作表作为模板。这是不允许的:

图纸模板必须是电子表格对象的图纸之一

解决方法是将模板添加到要使用它的电子表格中

var templateCopy = sheet.copyTo(ss);
ss.insertSheet('Part 1', 2, {template: templateCopy}); 
ss.insertSheet('Part 2', 3, {template: templateCopy});
// ...  more sheets created
ss.deleteSheet(templateCopy);   // copied template deleted 
想想看,
copy
的功能与使用模板插入基本相同,只是在使用它时没有指定图纸名称或索引的方法