1

在 Google Apps 脚本中使用这行代码时

  var user = folders[n].getOwner().getEmail()

我收到一条错误消息,提示我无权执行此类操作(您的版本可能有所不同,我是从意大利语翻译的)。

是什么赋予了?我只是在检索信息,例如文件夹的所有者。


当脚本处理我拥有的文件夹时,不会出现错误,当遇到不属于我的文件夹时会出现错误。问题是这行代码仅用于发现不属于我的文件夹,以避免发出会正确引发错误的方法,例如setTrashed. 该脚本查找空文件夹以删除它们,但我不能删除我当然不是所有者的文件夹。是的,我喜欢 Google 商业应用程序,这有什么不同吗?

4

1 回答 1

3

没有关于 的任何特定警告file.getOwner().getEmail(),但有Class Session

在有限权限的执行中(例如响应 onOpen 或 onEdit),如果用户和脚本所有者都属于同一个域,我们只返回活动用户的身份。这是为了保护消费者用户的隐私,他们可能不希望他们的电子邮件地址暴露。

我在消费者帐户中对此没有任何问题。

以下函数摘自我为上一个问题发布的要点.getEmail()它将对(或getUserLoginId()如果您愿意)的调用包装在一个try ... catch块中,因此它可以避免跨应用程序域的用户出错。

function getFileInfo (file,fileType) {
  var fileInfo = {
    id: file.getId(),
    name: file.getName(), 
    size: file.getSize(),
    type: (fileType == "file") ? docTypeToText_(file.getFileType()) : "folder",
    created: file.getDateCreated(),
    description: file.getDescription(),
    owner: file.getOwner()
  }
  try {
    fileInfo.owner = file.getOwner().getEmail()//.getUserLoginId()
  } catch(e)
  {
    // Possible permission problem
    fileInfo.owner = "unknown";
  }
  return fileInfo;
}

更新:自从首次发布以来,情况发生了变化。现在,我的消费者帐户在尝试访问getOwner()从另一个帐户共享的文件时遇到上述错误。(2013 年 3 月 3 日)

于 2013-01-31T12:33:03.923 回答