关于Google Drive getViewers方法始终返回空数组的求助
Google Drive getViewers方法返回空数组的问题解决
问题根源分析
- 返回值类型误解:
getViewers()返回的是User对象数组,不是邮箱字符串数组,直接用indexOf(gmail_address)找不到匹配项;而且原代码的条件表达式存在语法错误——gmail_address<0是把邮箱字符串和数字0比较,得到布尔值后再用indexOf查找,逻辑完全错误。 - 权限限制:如果运行脚本的账号没有目标文件夹的管理/编辑权限,
getViewers()会返回空数组,因为无权限查看文件夹的共享列表。
修正后的代码
function test_getViewers() { var gmail_address = "my_gmail_address@gmail.com"; var foto_folder_id = "my folder id"; // 替换为真实文件夹ID // 获取文件夹对象(避免重复调用getFolderById) var fotoFolder = DriveApp.getFolderById(foto_folder_id); // 将User对象数组转换为邮箱字符串数组 var viewerEmails = fotoFolder.getViewers().map(viewer => viewer.getEmail()); // 检查邮箱是否不在查看者列表中,再执行添加操作 if (viewerEmails.indexOf(gmail_address) === -1) { fotoFolder.addViewer(gmail_address); } }
额外注意事项
- 确认运行脚本的账号对目标文件夹拥有编辑或管理权限,否则无法读取查看者列表。
- 如果文件夹属于Google Workspace团队盘,需确认团队权限设置允许脚本读取共享成员信息。
内容的提问来源于stack exchange,提问作者niclaus76
相关产品推荐
相关产品推荐

