我需要你的帮助。
我做了一个函数,目标是复制一个模板文件,并把它放在一个共享驱动器的文件夹中。问题是,该程序返回:
"Exception.This operation cannot be performed on an item in the share drive: 这个操作不能在共享驱动器中的一个项目上执行"。
然而,我在那个共享驱动器中拥有所有的权限,所以我不明白。
我做了几次调整,我已经建立了那个 removeFile
和 addFile
是问题的一部分。如果我不运行它们,就会创建文件夹,并进行复制。但是我还是需要移动文件。
我希望有人能帮我解决这个问题。
PS : 你可以在下面找到我的代码。
function makeCopyFile(folderID, fileID, newName) {
var getFolder = DriveApp.getFolderById(folderID);
var file = DriveApp.getFileById(fileID);
var copyFile = file.makeCopy();
var newFile = copyFile.setName(newName);
// Remove the file from all parent folders
var parents = newFile.getParents();
while (parents.hasNext()) {
var parent = parents.next();
parent.removeFile(newFile);
}
getFolder.addFile(newFile);
};
DriveApp
如果你改用 高级驱动器服务 其中你可以指定 "supportsAllDrives": true
所以,启用高级服务后:替换
var parents = newFile.getParents();
while (parents.hasNext()) {
var parent = parents.next();
parent.removeFile(newFile);
}
通过
var id = copyFile.getId();
// or alternatively `var id = newFile.getId();` - because it is the same
Drive.Files.remove(id,{"supportsAllDrives": true})
至于 getFolder.addFile(newFile);
一旦你删除了一个文件,你就不能再把它添加回来。另外,我也不明白你的动机----。copyFile.setName(newName);
就足以重命名文件--你不需要删除旧名的文件并插入新名的文件。
如果你的目标是复制一个文件到一个团队驱动器文件夹,你可以很容易地做到这一点与驱动API以下。
function makeCopyFile(folderID, fileID, newName){
var resource = {
"parents": [
{
"id": folderID
}
],
"title": newName
}
Drive.Files.copy(resource, fileID, {"supportsAllDrives": true})
}