我正在尝试使用应用脚本将Google Apps脚本文件的副本放入共享云端硬盘中。
我的代码如下所示:
function copyFileToSharedDrive(){
var sharedDriveId = "sharedriveidcomeshere";
var sharedDrive = DriveApp.getFolderById(sharedDriveId);
var appsScriptFileId = "appsscriptfileidcomeshere";
DriveApp.getFileById(appsScriptFileId).makeCopy(sharedDrive).setName("This is a copy of the original apps script file");
}
但是,结果是应用脚本文件的副本,但它位于我的 Google 云端硬盘的根文件夹中,而不是共享云端硬盘中。
如果我对电子表格,Google文档或幻灯片执行完全相同的操作,则代码就像一个魅力。
我还尝试了高级Google服务并使用了Drive API。那里没有运气...文件仍在执行代码的用户的根文件夹中创建。
Drive.Files.copy(
{title: "This is a copy of the appsscript file", parents: [{id: sharedDriveId}]},
"appsScriptFileId",
{supportsAllDrives: true}
);
有什么帮助吗?
这个答案怎么样?
修改点:
- 很遗憾,Google Apps 脚本文件无法使用
makeCopy
直接复制到共享云端硬盘。该文件将复制到 MyDrive 的根驱动器。我认为这可能是一个错误。
那么在这种情况下,使用云端硬盘 API 怎么样?修改脚本后,它将变为如下。
修改后的脚本:
在运行脚本之前,请在高级 Google 服务中启用云端硬盘 API。
function copyFileToSharedDrive(){
var sharedDriveId = "sharedriveidcomeshere";
var appsScriptFileId = "appsscriptfileidcomeshere";
Drive.Files.copy(
{title: "This is a copy of the original apps script file", parents: [{id: sharedDriveId}]},
appsScriptFileId,
{supportsAllDrives: true}
);
}
引用:
- 高级谷歌服务
- 文件:复制
添加:
- 您希望将 Google 企业应用套件文件复制到共享云端硬盘中的指定文件夹中。
为此,以下脚本怎么样?在此脚本中,使用以。
- 复制谷歌企业应用套件文件。此时,文件将创建到根文件夹。
- 使用云端硬盘 API 的 Files.patch 方法将 GAS 文件移至共享云端硬盘中的特定文件夹。
示例脚本:
function copyFileToSharedDrive(){
var destinationFolderId = "###"; // Please set the destination folder ID of shared Drive.
var appsScriptFileId = "###"; // Please set the GAS script ID.
var file = DriveApp.getFileById(appsScriptFileId)
var copiedFile = file.makeCopy().setName(file.getName()).getId();
Drive.Files.patch(
{title: "This is a copy of the original apps script file"},
copiedFile,
{removeParents: "root", addParents: destinationFolderId, supportsAllDrives: true}
);
}
注意:
大约
supportsAllDrives
,官方文件如下。已弃用 - 请求应用程序是否同时支持"我的云端硬盘"和共享云端硬盘。此参数仅在 2020 年 6 月 1 日之前有效。之后,假定所有应用程序都支持共享云端硬盘。
- 这样,从 2020 年 6 月 1 日起,即使不使用
supportsAllDrives
,也可以使用共享云端硬盘。
- 这样,从 2020 年 6 月 1 日起,即使不使用
参考:
- 文件:补丁