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

如何用Apps Script设置仅域内用户可访问的文件权限

按域名设置Google Drive文件/文件夹权限的正确实现

可以仅通过域名限制Google Drive文件/文件夹的访问权限,你的代码问题出在错误使用了addViewers和addEditors方法——这两个方法仅接受单个用户邮箱或邮箱数组,不支持直接传入域名字符串。以下是修正后的完整实现:

核心修正点

  • 使用DriveApp.setSharing()结合DriveApp.Access.DOMAIN参数,直接为整个域名设置权限
  • 若需在私有权限基础上追加域名访问,可使用addPermission()方法并指定DriveApp.PermissionType.DOMAIN
  • 注意:该特性仅适用于Google Workspace(原G Suite)账号,个人Google账号无法使用域共享功能

修正后的完整代码

function updatePermissions() {
  // 补全工作表对象获取(原代码未定义,需确保工作表名称正确)
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetDatabase = ss.getSheetByName("sheetDatabase");
  var sheetSetting = ss.getSheetByName("sheetSetting");

  var domainSetting = sheetDatabase.getRange('K3').getValue();
  var domain = sheetDatabase.getRange('K4').getValue(); // 格式应为 guru.smk.belajar.id(无需@前缀)
  Logger.log("当前目标域名: " + domain);

  // 获取目标文件夹和文件
  var folderAplikasiPklID = sheetSetting.getRange(6, 3).getValue();
  var folder = DriveApp.getFolderById(folderAplikasiPklID);
  var spreadsheetID = sheetSetting.getRange(7, 3).getValue();
  var ssJurnalPKL = DriveApp.getFileById(spreadsheetID);

  if (domainSetting === 'ARRANGED') {
    // 1. 设置文件夹:仅域内用户可查看
    folder.setSharing(DriveApp.Access.DOMAIN, DriveApp.Permission.VIEW);
    // 若需保留私有权限同时追加域访问,可替换为:
    // folder.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.VIEW);
    // folder.addPermission(domain, DriveApp.PermissionType.DOMAIN, DriveApp.Permission.VIEW);

    // 2. 设置表格:仅域内用户可编辑(先清理现有权限)
    // 移除所有现有查看者和编辑者
    ssJurnalPKL.getViewers().forEach(viewer => ssJurnalPKL.removeViewer(viewer));
    ssJurnalPKL.getEditors().forEach(editor => ssJurnalPKL.removeEditor(editor));
    // 设置域内编辑权限
    ssJurnalPKL.setSharing(DriveApp.Access.DOMAIN, DriveApp.Permission.EDIT);
    // 若需追加权限而非替换,可替换为:
    // ssJurnalPKL.addPermission(domain, DriveApp.PermissionType.DOMAIN, DriveApp.Permission.EDIT);
  } else if (domainSetting === 'UNREGULATED') {
    // 设置为任何人可通过链接编辑
    ssJurnalPKL.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT);
  }

  Logger.log('权限更新完成');
};

额外注意事项

  • 域名格式需为guru.smk.belajar.id,无需添加@前缀
  • 确保运行脚本的账号拥有目标文件/文件夹的所有者权限
  • 若需混合权限(如部分外部用户+域内用户),请使用addPermission()方法追加权限,而非直接用setSharing()覆盖

内容的提问来源于stack exchange,提问作者PSAB Plalangan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:44:50