Sheet#copyTo(Spreadsheet)引发服务错误

时间:2019-02-14 00:11:24

标签: google-apps-script google-sheets

我只是想复制模板工作表,并在脚本识别出缺少工作表时对其进行重命名。

第8行(带有copyTo)不起作用。我收到此错误消息:

  

服务错误:电子表格(第202行,文件“ statsContacts”)

关于S.O.的类似问题表明Range#copyTo有问题,但这是另一种方法。

N.B.1:在最终版本中,“ communautes”和“ feuillesExistantes”将动态生成
N.B.2:我添加了Array.prototype.includes的polyfill才能使用它

function creerFeuillesManquantes(){
  var communautes = ['ESSAI', 'TEST', 'FOO'];
  var feuillesExistantes = ['Catégorie ESSAI', 'Catégorie TEST'];
  for (c in communautes){
    if (!feuillesExistantes.includes(communautes[c])){
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var template = ss.getSheetByName('TEMPLATE');  
      var newSheet = template.copyTo(ss);
      SpreadsheetApp.flush(); // avant de renommer, on s'assure que la copie soit faite
      newSheet.setName('Catégorie '+communautes[c]);
    }
  }
}

1 个答案:

答案 0 :(得分:1)

尝试更改为以下内容:

function creerFeuillesManquantes(){
  var communautes = ['ESSAI', 'TEST', 'FOO'];
  var feuillesExistantes = ['Catégorie ESSAI', 'Catégorie TEST'];

  // move ss and template up to avoid making network calls every time
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var template = ss.getSheetByName('TEMPLATE');

  for (c in communautes){
    if (!feuillesExistantes.includes(communautes[c])){
      ss.insertSheet('Catégorie '+communautes[c], { template: template });
      SpreadsheetApp.flush(); // avant de renommer, on s'assure que la copie soit faite
    }
  }
}

我发现,当我切换到ss.insertSheet(...)而不是template.copyTo(...)时,我收到了更好的错误消息,例如This action would increase the number of cells in the workbook above the limit of 5000000 cells.