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

如何使用Google Apps Script获取Google Drive中设为受限共享模式的文件及文件夹

Google Apps Script 实现获取受限共享Drive资源清单方案

前置准备

  • 打开你的Google Sheets,点击「扩展 > Apps Script」进入脚本编辑器
  • 在编辑器左侧「服务」栏点击「+」,找到「Drive API」选择v3版本添加到项目中

核心实现逻辑

你要找的受限共享设置,本质是文件/文件夹没有配置企业全域级的访问权限,仅允许手动添加的指定用户/群组访问,核心判断逻辑如下:

  1. 遍历指定范围的所有Drive文件/文件夹(支持指定根文件夹、我的云端硬盘、共享盘)
  2. 拉取每个资源的所有权限配置
  3. 检查权限列表中是否存在type为domain的全域权限条目,不存在即为受限共享资源
  4. 输出符合条件的资源信息到关联的Google Sheet中

参考代码

// 配置项:替换为你们企业的域名,多域名可以加在数组里
const CORP_DOMAINS = ['your-company.com'];
// 配置项:要扫描的根文件夹ID,留空则扫描当前账号的「我的云端硬盘」
const SCAN_ROOT_FOLDER_ID = '';
// 配置项:扫描结果输出到当前Sheet的起始行
let START_ROW = 2;

function getRestrictedSharedItems() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // 写入表头
  sheet.getRange(1,1,1,5).setValues([['资源名称', '资源类型', '资源ID', '访问链接', '所有者邮箱']]);
  let output = [];
  let pageToken = null;

  do {
    // 拉取文件列表
    const params = {
      q: SCAN_ROOT_FOLDER_ID ? `'${SCAN_ROOT_FOLDER_ID}' in parents and trashed = false` : 'trashed = false',
      fields: 'nextPageToken, files(id, name, mimeType, webViewLink, owners, permissions)',
      pageToken: pageToken,
      supportsAllDrives: true,
      includeItemsFromAllDrives: true
    };
    const res = Drive.Files.list(params);
    const files = res.files || [];

    files.forEach(file => {
      // 判断是否为受限共享:无域类型权限
      const isRestricted = !file.permissions.some(perm => {
        return perm.type === 'domain' && CORP_DOMAINS.includes(perm.domain);
      });
      if (isRestricted) {
        output.push([
          file.name,
          file.mimeType === 'application/vnd.google-apps.folder' ? '文件夹' : '文件',
          file.id,
          file.webViewLink,
          file.owners[0].emailAddress
        ]);
      }
    });
    // 批量写入减少API调用
    if (output.length >= 100) {
      sheet.getRange(START_ROW, 1, output.length, 5).setValues(output);
      START_ROW += output.length;
      output = [];
    }
    pageToken = res.nextPageToken;
  } while (pageToken);

  // 写入剩余结果
  if (output.length > 0) {
    sheet.getRange(START_ROW, 1, output.length, 5).setValues(output);
  }
  SpreadsheetApp.getUi().alert(`扫描完成,共找到${START_ROW - 2 + output.length}个受限共享资源`);
}

注意事项

  • 若需要扫描企业全域所有资源,需使用企业超级管理员账号为脚本配置全域委派权限,否则仅能扫描当前账号有权限访问的资源
  • 资源量较大时建议分批扫描,避免触发Drive API的调用配额限制
  • 确认企业所有使用的域名都已添加到CORP_DOMAINS配置项中,避免出现误判

内容的提问来源于stack exchange,提问作者Tejesh Dohare

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:54:09