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

如何在Google Apps Script共享PDF时禁用自动邮件通知?

解决Google Apps Script添加Drive文件编辑权限时自动发送邮件的问题

你当前代码中使用的addEditor(editor)方法默认会向被添加权限的用户发送邮件通知,要禁用这个行为,只需在调用addEditor时添加sendNotificationEmail: false的配置参数即可。

另外注意你原代码存在一个逻辑问题:DriveApp.getFilesByName(pdfName)返回的是文件迭代器,只能被遍历一次。这会导致只有第一个编辑器能获得所有PDF文件的权限,后续编辑器无法匹配到文件。需要先将所有目标文件存入数组,再进行权限分配。

修正后的完整代码如下:

function setPDFAuth(pdfName) {
  // 定位目标Reports文件夹
  var targetFolder = null;
  var folders = DriveApp.getFolders();
  while (folders.hasNext()) {
    var folder = folders.next();
    if (folder.getName() === 'Reports') {
      targetFolder = folder;
      break; // 找到目标后终止循环,提升效率
    }
  }

  if (!targetFolder) {
    Logger.log('未找到名为Reports的文件夹');
    return;
  }

  // 获取文件夹下所有编辑器
  var editors = targetFolder.getEditors();
  // 收集所有匹配名称的PDF文件到数组
  var pdfFiles = [];
  var files = DriveApp.getFilesByName(pdfName);
  while (files.hasNext()) {
    pdfFiles.push(files.next());
  }

  if (pdfFiles.length === 0) {
    Logger.log('未找到名为' + pdfName + '的PDF文件');
    return;
  }

  // 为每个编辑器批量添加权限,不发送通知邮件
  editors.forEach(editor => {
    const editorEmail = editor.getEmail();
    pdfFiles.forEach(file => {
      file.addEditor(editorEmail, {sendNotificationEmail: false});
    });
  });
};

关键修改说明

  • 禁用邮件通知:通过addEditor(editorEmail, {sendNotificationEmail: false})阻止自动发送权限通知邮件
  • 修复迭代器耗尽问题:先将所有目标PDF文件存入数组,确保每个编辑器都能获取到所有文件的权限
  • 优化查找逻辑:找到目标文件夹后立即终止循环,避免不必要的遍历
  • 增加异常处理:添加文件夹/文件未找到的判断,避免后续代码报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:20:05