我需要您的帮助。
我做了一个功能,目标是制作一个模板文件的副本,并将其放在共享驱动器的文件夹中。问题是程序返回:
“例外:无法对共享驱动器中的项目执行此操作”
但是,我拥有该共享驱动器中的所有权限,所以我不理解。
我做了几处调整,发现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);
};
答案 0 :(得分:1)
DriveApp
如果您使用Advanced Drive service代替"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);
足以重命名该文件-您无需删除具有旧名称的文件并插入具有新名称的文件。
如果您的目标是将文件复制到团队驱动器文件夹,则可以使用Drive API轻松完成以下操作:
function makeCopyFile(folderID, fileID, newName){
var resource = {
"parents": [
{
"id": folderID
}
],
"title": newName
}
Drive.Files.copy(resource, fileID, {"supportsAllDrives": true})
}