重命名电子表格重复的appsscript项目

时间:2020-02-26 08:10:29

标签: google-apps-script google-sheets

我正在复制带有附件appsscript项目的基于模板文件的电子表格。您可以在下面看到基本代码。 这非常适合电子表格,但是appsscript项目的名称与模板文件相同。这是一个问题,因为我无法再区分它们了。最后我将有数百个重复项。

是否有办法在复制时设置appsscript项目名称?

提前谢谢!

function copyTemplatev2(filename, sheetID) {

  var ss = SpreadsheetApp.openById(sheetID);

   //Make a copy of the template file
  var copy = DriveApp.getFileById(sheetID).makeCopy()
  var documentId = copy.getId();

  // Set permissions
  copy.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT)

  //Rename the copied file
  DriveApp.getFileById(documentId).setName(filename);
}

1 个答案:

答案 0 :(得分:3)

    attached appsscript project中的
  • a template file with attached appsscript project是Spreadsheet的容器​​绑定脚本。
  • 您要重命名已复制的电子表格的容器绑定脚本的GAS项目名称。
  • 电子表格用作模板,并且容器绑定脚本包含在电子表格中。

如果我的理解正确,那么这个答案如何?请认为这只是几个可能的答案之一。

问题和解决方法:

  • 无法通过Drive API中的Files:list和Files:方法来检索Google Docs的容器绑定脚本。这已经报告给issue tracker
  • 可以通过文件方法:在Drive API中更新Google Doc的容器绑定脚本的元数据。
  • 对于您而言,由于GAS项目ID(脚本ID)已包含在电子表格模板中,因此不会更改。我认为这可以用来解决您的问题。

从上述情况来看,我想提出以下流程。

流量:

  1. 设置模板电子表格的容器绑定脚本ID的变量和模板电子表格的容器绑定脚本ID的原始项目名称。
  2. 将模板电子表格的GAS项目重命名为新的项目名称。
  3. 复制模板电子表格。此时,GAS项目也被复制为新项目名称。
  4. 将模板电子表格的GAS项目重命名为原始项目名称。

通过以上流程,可以重命名复制的电子表格中容器绑定脚本的GAS项目名称。

当上述解决方法反映到您的脚本中时,它如下所示。

修改后的脚本:

在运行脚本之前,please enable Drive API at Advanced Google services.并请设置变量GASProjectIdoriginalGASProjectNamenewGASProjectName

function copyTemplatev2(filename, sheetID) {
  var GASProjectId = "###";  // Please set the container-bound script ID of the template Spreadsheet.
  var originalGASProjectName = "originalName";  // Please set the original project name of container-bound script ID of the template Spreadsheet.
  var newGASProjectName = "newName"; // Please set the new GAS project name.


  // Rename to new project name.
  Drive.Files.update({title: newGASProjectName}, GASProjectId);

  var ss = SpreadsheetApp.openById(sheetID);

  //Make a copy of the template file
  var copy = DriveApp.getFileById(sheetID).makeCopy()
  var documentId = copy.getId();

  // Set permissions
  copy.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT)

  //Rename the copied file
  DriveApp.getFileById(documentId).setName(filename);

  // Rename to original project name.
  Drive.Files.update({title: originalGASProjectName}, GASProjectId);
}

参考文献:

如果我误解了您的问题,而这不是您想要的方向,我深表歉意。