You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Google Drive getViewers方法始终返回空数组的求助

Google Drive getViewers方法返回空数组的问题解决

问题根源分析

  1. 返回值类型误解:getViewers()返回的是User对象数组,不是邮箱字符串数组,直接用indexOf(gmail_address)找不到匹配项;而且原代码的条件表达式存在语法错误——gmail_address<0是把邮箱字符串和数字0比较,得到布尔值后再用indexOf查找,逻辑完全错误。
  2. 权限限制:如果运行脚本的账号没有目标文件夹的管理/编辑权限,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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 09:51:31