复制电子表格也会复制所有链接的文件

时间:2018-08-10 16:16:19

标签: google-apps-script google-sheets google-drive-api google-form

当我使用库方法时,我只希望能够复制电子表格及其所有工作表以及所有定义的工作表名称:

spreadSheet.copy(newSSName);

或者,

myFile.makeCopy(newNameOfFile);

当前,这些方法复制所有链接的表单和表单中使用的脚本。这对于我需要的东西来说是不必要的副作用,并且会导致Drive文件夹中的乱七八糟。有没有一种方法可以快速而有效地做到这一点,而又不必一个又一个地复制单元格?还是唯一的选择?

谢谢。

1 个答案:

答案 0 :(得分:3)

该解决方法如何?在这种解决方法中,Sheets API用于复制电子表格。对于类电子表格的copy(),类文件和文件的makeCopy():Drive API的副本,复制的电子表格包含绑定的脚本和链接的表单。所以我想使用Sheets API。此解决方法的流程如下。

  1. 使用sheetsheets.get检索源电子表格的对象。
  2. 通过使用sheets.create包含检索到的对象来创建新的电子表格。

通过此流程,可以创建不包含绑定脚本和链接表单的复制电子表格。示例脚本如下。使用此脚本时,请在高级Google服务和API控制台上启用Sheets API。您可以在here上了解如何启用Sheets API。

示例脚本:

var fileId = "### fileId of source Spreadsheet ###"; // Please set here.
var obj = Sheets.Spreadsheets.get(fileId, {fields: "namedRanges,properties,sheets"});
Sheets.Spreadsheets.create(obj);

注意:

  • 使用此脚本时,请设置源电子表格的fileId。
  • 在Sheets API的电子表格.create上,无法在特定文件夹中创建电子表格。因此,将复制的电子表格创建到根文件夹。如果要在特定文件夹中创建它,请在复制电子表格后将其移动。当然,您可以使用脚本来做到这一点。
  • 如果要包含电子表格的developerMetadata,请将其添加到fields

参考文献:

如果这不是您想要的,对不起。