如何在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
相关产品推荐
相关产品推荐

