【问题标题】:Finding and changing Google file owners查找和更改 Google 文件所有者
【发布时间】:2020-07-01 17:52:32
【问题描述】:

我希望能够检查我共享的给定文件夹,查看其他人放入该文件夹的文件,然后获得这些文件的所有权。我试过这个:

function changeUser() {
  
  var folderID = "<folder ID here>"
  var newUser = "<my email address>"
  
  var folder = DriveApp.getFolderById(folderID);
  var files = folder.getFiles();
  
  while (files.hasNext()) {
    var file = files.next();
      if(file.getOwner() <> "DriveUser") {
        file.setOwner(newUser);
      }
  }
}

我正在使用“DriveUser”,因为当我运行 Logger.log(file.getOwner()); 时,它就是它所说的用户。但我当然不确定这是对的。

当我尝试运行它时,它告诉我在 IF 语句行中有一个意外的标记“>”。嘿-我是新手。无论如何,有什么建议可以让我完成这项工作吗?

【问题讨论】:

  • 我只是在没有 IF 语句的情况下尝试了它 - 只需将文件夹中的任何内容设置为我,作为用户(使用我的电子邮件地址)。新的例外是:Exception: Action not allowed. 所以我仍然没有做某事正确。
  • 最好将其标记为 google-apps-script。 google-apps-script-editor 标记用于解决有关代码编辑器界面而非语言本身的问题。

标签: javascript google-apps-script google-drive-api comparison-operators


【解决方案1】:

我认为您的代码存在两个问题:

  1. Javascript 使用 != 表示“不等于”,而不是在某些其他语言中使用的 &lt;&gt;
  2. 您看到记录的DriveUser 不是字符串值,而是Userdocumented here 的实例。要获得有意义的用户标识符,需要调用该类的方法.getEmail()。然后,您可以将其与您自己的电子邮件地址进行比较。

所以更新后的代码如下所示:

var folderID = "..."
var newUser = "(an email address)"
  
var folder = DriveApp.getFolderById(folderID);
var files = folder.getFiles();
console.log(folder.getOwner())
  
while (files.hasNext()) {
  var file = files.next();
    if(file.getOwner().getEmail() != newUser) {
      file.setOwner(newUser);
    }
}

但是您会遇到第三个问题:这仅在您将所有权转移到另一个用户(即您拥有文件和@987654330 @ 不是您的电子邮件地址)。 Apps 脚本代表您运行脚本,这意味着它不会执行您无权手动执行的操作 - 只有文件的所有者才能将该所有权转让给其他用户。如果你在不属于你的文件上运行脚本,你会得到一个措辞模糊的错误Action not allowed

【讨论】:

  • 欢迎来到 Apps Script 的精彩世界,@David!
  • 谢谢,是的,我发现这将是一个问题,即使手动进行也是如此。目标是将其用于一种投递箱,客户可以在其中将他们想要发送给我的文件放入 他们的 文件夹(在 my 文件夹集中),并且然后我可以把这些文件移动到我需要的地方。但由于权限的原因,看起来并没有办法做到这一点。有什么办法可以允许吗?
  • 如果您拥有父文件夹的编辑权限,您可以在不拥有文件所有者的情况下移动文件。见developers.google.com/apps-script/reference/drive/…。如果您想将原始文件保留在客户端文件夹中,您也可以在自己的文件夹中创建快捷方式。见developers.google.com/apps-script/reference/drive/…
  • 但是如果您需要获得文件的所有权,您需要创建一个客户端在他们自己的帐户下运行的脚本,以便将所有权传递给您。这可以通过将脚本部署为 Web 应用程序,或将脚本附加到与客户端共享的电子表格或文档上的自定义菜单来完成。无论哪种情况,都要求客户授权脚本代表他们行事。
猜你喜欢
  • 2021-08-30
  • 2022-09-28
  • 1970-01-01
  • 2017-09-07
  • 2011-01-14
  • 2014-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多