首页 > 解决方案 > 复制电子表格也会复制所有链接的文件

问题描述

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

spreadSheet.copy(newSSName);

或者,

myFile.makeCopy(newNameOfFile);

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

谢谢。

标签: google-apps-scriptgoogle-sheetsgoogle-drive-apigoogle-sheets-api

解决方案


这个解决方法怎么样?在此解决方法中,Sheets API 用于复制电子表格。对于 Class Spreadsheet 的 copy(),Class File 和 Files 的 makeCopy():Drive API 的副本,复制的电子表格包括绑定的脚本和链接的表单。所以我想使用 Sheets API。此解决方法的流程如下。

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

通过该流程,可以创建不包括绑定脚本和链接表单的复制电子表格。示例脚本如下。使用此脚本时,请在高级 Google 服务和 API 控制台中启用 Sheets API。您可以在此处了解如何启用 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.

参考 :

如果这不是你想要的,我很抱歉。


推荐阅读