使用另一个电子表格的模板创建床单



这是我要使用的电子表格方法。

这是我使用的地方:

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个表,"成员信息","成员进度"one_answers" Sheet1"。

当我单独使用模板参数(在较小的应用中,特别是仅测试它的使用方式以及是否有效)时,它可以正常工作。

有任何想法,有人经历过吗?如果我从当前代码中省略了模板参数,则所有表格都正确插入。

我希望能够使用模板格式化每个表格。

您正在尝试使用另一个电子表格作为模板使用表。这是通过插入方式方法允许的:

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

解决方法是将模板复制到要使用的电子表格。

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做的大多与使用模板插入的事情相同,只是没有办法在使用时分配表格名称或索引。

最新更新