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

Copying a spreadsheet copies all linked files as well

我希望能够仅复制传播sheet及其所有 sheets 以及所有已定义的 sheet 名称,当我使用库方法时:

spreadSheet.copy(newSSName);

或者,

myFile.makeCopy(newNameOfFile);

目前这些方法复制所有链接的表单和表单中使用的脚本。这是我需要的不必要的副作用,会导致 Drive 文件夹中出现大量混乱。有没有一种方法可以快速有效地完成此操作,而无需逐个单元地复制 sheet by sheet?或者这是唯一的选择?

谢谢。

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

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

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

了解如何启用表格 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。
  • 在表格 API 的 spreadsheets.create,无法在特定文件夹中创建电子表格。所以复制的电子表格被创建到根文件夹。如果要在特定文件夹中创建它,请在复制电子表格后将其移动。当然,你可以使用脚本来完成。
  • 如果要包含电子表格的 developerMetadata,请将其添加到 fields

参考资料:

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

将电子表格复制到目标文件夹而不复制脚本

function copyspreadsheetwithoutgoogleappsscript() {
  const ssid = "";//source spreadsheet id
  const fldrid = "";//destination folder id
  Drive.Files.update({ parents: [{ id: fldrid }] }, Sheets.Spreadsheets.create(Sheets.Spreadsheets.get(ssid,{fields:"sheets,namedRanges,properties"})).spreadsheetId);
}

子属性使用 /

Working With Field Masks

available fields 介于电子表格和电子表格属性之间

如果您愿意,也可以使用 API 端点:

function copyssurl() {
  const ssid = "";
  const dfldrid = "";
  const url = `https://sheets.googleapis.com/v4/spreadsheets/${ssid}?fields=(sheets%2CnamedRanges%2Cproperties)`;
  const options = { "method": "get", "muteHttpExceptions": true, "headers": { "Authorization": "Bearer " + ScriptApp.getOAuthToken() } };
  const resp = UrlFetchApp.fetch(url,options);
  const obj = JSON.parse(resp.getContentText());
  Drive.Files.update({ parents: [{ id: dfldrid }] }, Sheets.Spreadsheets.create(obj).spreadsheetId);
}

%2C is a comma

%2F is a forward slash