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

如何解决Google Apps Script中folder.addViewer()报Drive服务异常错误

问题排查与解决方案

1 先修复代码显性语法错误

你提供的代码中viewers的映射函数存在JS自动分号插入(ASI)导致的逻辑错误:

viewers = viewers.map(function(item) {
  return
  item.getEmail().toLowerCase();
}).sort();

这里return单独占一行,JS会自动在return后补充分号,直接返回undefined,后续所有权限校验逻辑全部失效,会出现重复添加已存在用户的情况,大概率是触发Drive接口报错的直接原因。修改为:

viewers = viewers.map(function(item) {
  return item.getEmail().toLowerCase();
}).sort();

2 其他触发"Exception: Service Error: Drive"的常见原因及修复

  • 权限不足:当前运行脚本的账号对目标文件夹没有管理权限,或者填写的folderid错误。确认文件夹ID正确,且运行脚本的账号是文件夹所有者、或拥有文件夹的管理共享权限。
  • 待添加邮箱非法:邮箱存在空格、格式不符合标准,或者非谷歌账号(部分企业外部账号未注册谷歌账号也会触发报错),可以给权限添加逻辑加异常捕获,跳过非法账号:
for (var i = 0; i < userstoadd.length; i++) {
  if (viewers.indexOf(userstoadd[i]) == -1 && editorstoadd.indexOf(userstoadd[i]) == -1) {
    try {
      folder.addViewer(userstoadd[i]);
      console.log("成功添加查看者:" + userstoadd[i]);
    } catch (e) {
      console.log("添加查看者失败:" + userstoadd[i] + ",错误信息:" + e.toString());
    }
  }
}
for (var i = 0; i < editorstoadd.length; i++) {
  if (editors.indexOf(editorstoadd[i]) == -1) {
    try {
      folder.addEditor(editorstoadd[i]);
      console.log("成功添加编辑者:" + editorstoadd[i]);
    } catch (e) {
      console.log("添加编辑者失败:" + editorstoadd[i] + ",错误信息:" + e.toString());
    }
  }
}
  • 接口调用限流:如果单次添加的用户数超过30人,Drive接口会触发限流报错,可以在每次添加操作后加1秒延迟,插入代码Utilities.sleep(1000);即可。
  • 企业域共享限制:如果待添加用户是你司谷歌Workspace域外部账号,管理员设置了禁止外部共享也会触发报错,联系域管理员确认共享策略即可。

内容的提问来源于stack exchange,提问作者UOM Tech Specialist

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:48:00