谷歌应用脚本 – 在共享驱动器内对元素进行不可能的操作。

我需要你的帮助。

我做了一个函数,目标是复制一个模板文件,并把它放在一个共享驱动器的文件夹中。问题是,该程序返回:

“Exception.This operation cannot be performed on an item in the share drive: 这个操作不能在共享驱动器中的一个项目上执行”。

然而,我在那个共享驱动器中拥有所有的权限,所以我不明白。

我做了几次调整,我已经建立了那个 removeFileaddFile 是问题的一部分。如果我不运行它们,就会创建文件夹,并进行复制。但是我还是需要移动文件。

我希望有人能帮我解决这个问题。

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})
}

给TA打赏
共{{data.count}}人
人已打赏
解决方案

我们如何能迭代Map链接线性结构,即使它们被实现为红黑或AVL树?

2022-5-13 22:00:38

解决方案

在java中使用openchannel无法访问远程机器的cmd提示符。

2022-5-14 0:00:12

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索