在Google Apps脚本中使用此行代码
var user = folders[n].getOwner().getEmail()
我收到错误消息称我无权执行此类操作(您的版本可能会有所不同,我正在翻译意大利语。)
是什么给出的?我只是检索一个信息,例如文件夹的所有者。
当脚本处理我拥有的文件夹时,不会出现错误,当遇到不属于我的文件夹时会出现错误。问题是这行代码只是为了发现不属于我的文件夹,以避免发出能正确引发错误的方法,如setTrashed
。该脚本查找空文件夹以删除它们,但我无法删除文件夹我当然不是所有者。是的,我是谷歌应用程序的业务,它有所作为吗?
答案 0 :(得分:3)
没有关于file.getOwner().getEmail()
的任何具体警告,但有Class Session。
在有限特权执行中(例如响应onOpen或 onEdit),我们只返回活动用户的身份 用户和脚本所有者属于同一个域。这是为了 保护可能不想要他们的电子邮件的消费者用户的隐私 地址暴露。
我在消费者帐户中没有这个问题。
以下功能摘自a gist I posted for a previous question。它会在.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日)