首页 > 解决方案 > 非管理员用户可以使用 Teamdrives.list()

问题描述

我一直在尝试使用 Google App Maker 中的高级云端硬盘服务。特别是在 Drive.Teamdrives.list() 方法的选项参数中使用“q”参数。

经过许多小时尝试制定使我能够过滤名称的查询后,我发现我必须设置 useDomainAdminAccess=true 才能使查询正常工作。如果没有那个开关,我会从查询中得到一个错误。

我的 App Maker 应用程序将以 User 而不是 Developer 身份运行,并且预期的应用程序将查询用户有权访问的 Teamdrives 名称中包含 pling(!)。

域用户可以使用 useDomainAdminAccess 开关还是只有域管理员?useDomainAdminAccess 是否授予对域中所有团队驱动器的访问权限,还是仅授予用户有权访问的团队驱动器?

为什么这个开关对于 q 参数起作用是必要的?

我应该放弃这种做事方式并研究另一种方式吗?

function myFunction() {
list = Drive.Teamdrives.list({q:"name contains '!'",
                            maxResults:4,
                            useDomainAdminAccess:true});
Logger.log(list);
}

标签: google-drive-apigoogle-app-maker

解决方案


在扫描团队驱动器后,我应该只使用 javascript filter() 函数来过滤我的数组。

  list = Drive.Teamdrives.list({maxResults:100}).items;

  filtered = list.filter(function(obj){
    return obj.name.indexOf('Key') === 0;}
                       );

该代码仅读取用户有权访问的团队驱动器,因此不需要 useDomainAdminAccess 标志。

数组过滤器仅返回一个新数组,其中包含以单词“Key”开头的那些 teamdrive。

自己回答!


推荐阅读