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

修改Google Apps Script 逐行为Drive文件匹配分配共享权限

逐行Google Drive文件授权脚本修改方案

表格规则说明

你的电子表格列定义如下,每行对应一条独立授权规则:

  • A列:Google Drive文件ID
  • B列:待授权用户邮箱地址
  • C列:共享权限角色,仅支持三类取值:Viewer(查看者)、Commenter(评论者)、Editor(编辑者)
    执行逻辑为:逐行读取数据,将该行B列指定的邮箱,按照C列设置的角色,授予A列ID对应Google Drive文件的访问权限。

原脚本存在两个核心问题:一是仅固定读取A2单元格的单个文件ID,会把所有邮箱都授权给这一个文件,无法逐行匹配;二是存在语法拼写错误,本身无法正常运行。

修改后完整代码

function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu("Share")
    .addItem("Give Access", "shareFile")
    .addToUi();
}

function shareFile() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const lastRow = sheet.getLastRow();
  // 从第2行开始读取A-C列全量数据,默认第1行为表头
  const authRules = sheet.getRange(2, 1, lastRow - 1, 3).getValues();
  const ui = SpreadsheetApp.getUi();
  let successCount = 0;
  const errorList = [];

  authRules.forEach((row, idx) => {
    const currentRowNum = idx + 2;
    const fileId = row[0]?.toString().trim();
    const userEmail = row[1]?.toString().trim();
    const authRole = row[2]?.toString().trim();

    // 跳过内容为空的无效行
    if (!fileId || !userEmail || !authRole) return;

    try {
      const targetFile = DriveApp.getFileById(fileId);
      switch (authRole) {
        case "Viewer":
          targetFile.addViewer(userEmail);
          break;
        case "Commenter":
          targetFile.addCommenter(userEmail);
          break;
        case "Editor":
          targetFile.addEditor(userEmail);
          break;
        default:
          errorList.push(`第${currentRowNum}行:权限角色填写错误,仅支持Viewer/Commenter/Editor三类取值`);
          return;
      }
      successCount++;
    } catch (err) {
      errorList.push(`第${currentRowNum}行:授权失败,原因:${err.message}`);
    }
  });

  // 执行完成后弹窗反馈结果
  let alertContent = `执行完成,共成功授权${successCount}条记录`;
  if (errorList.length > 0) {
    alertContent += `\n\n异常记录:\n${errorList.join("\n")}`;
  }
  ui.alert(alertContent);
}

使用方法

  • 打开目标Google表格,点击顶部「扩展程序」→「Apps脚本」进入脚本编辑器,删除原有全部代码,粘贴上面的修改后代码,点击保存。
  • 首次运行需要根据提示授权脚本访问你的Google表格、Google Drive权限,授权完成后刷新表格页面,顶部会出现名为Share的自定义菜单。
  • 确认表格数据填写无误后,点击Share菜单下的Give Access即可自动逐行执行授权。
  • 执行完成后会弹窗提示成功数量,以及所有失败行的具体错误原因,可根据提示修正对应行内容后重新运行。
  • 注意:运行脚本的账号必须拥有对应Google Drive文件的权限管理资格,否则会出现授权失败的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:06:28