如何关联自动处理Google Drive访问请求的脚本至Gmail与Google Drive?
我在Google Drive上发布了一款可下载产品,目前每个用户访问都需要提交权限申请,Google Drive会给我发送访问请求,我必须手动处理。我希望实现该流程的自动化,找到了以下可实现该功能的脚本:
/* Purpose of the Script: Add Shared Drive Access Requestor to Google Group used for ACL Shared Drive Link: https://drive.google.com/drive/u/2/folders/1EycKD-KKbdjRihYR1zKWpmzI62saAM1Z */ function addtoGroup() { var interval = 5; // if the script runs every 5 minutes; change otherwise var emails = []; var timeFrom = Math.floor(Date.now()/1000) - 60 * interval; var group = GroupsApp.getGroupByEmail("MYEMAIL"); var threads = GmailApp.search('label: "Access Request" after:' + timeFrom); for (var i = 0; i < threads.length; i++) { var messages = threads[i].getMessages(); if (messages.length == 1) { // only deal with threads with one message var ReplyToEmail = messages[0].getReplyTo().match(/([^<]+@[^>]+)/)[1]; emails.push(ReplyToEmail); messages[0].reply("Je hebt nu toegang om het luisterboek te downloaden.",{ cc:"MYEMAIL" }) } } for (i=0; i < emails.length; i++) { try { addMember (emails[i], group); } catch(e) { console.error(e); continue; } } } function addMember (email, group) { var hasMember = group.hasUser(email); Utilities.sleep(1000); if(!hasMember) { var newMember = {email: email, role: "MEMBER", delivery_settings: "NONE"}; } }
但我不知道如何将此脚本关联到我的Gmail和Google Drive。我可以创建该脚本,但脚本如何知晓要使用我的Gmail和Google Drive账号?或者,若所有服务都在同一Google Workspace账号下,是否会自动完成关联?
脚本关联与配置步骤
使用同一账号创建脚本
所有Google服务(Gmail、Drive、群组、Apps Script)绑定在同一Google账号(含Workspace账号)时,脚本会自动使用当前登录账号的权限。直接用该账号打开Google Apps Script平台,新建脚本粘贴代码即可。替换脚本变量
代码中有三处需替换为你的信息:GroupsApp.getGroupByEmail("MYEMAIL"):将MYEMAIL替换为管理Drive权限的Google群组邮箱(如drive-access@yourdomain.com)- 回复邮件内容
"Je hebt nu toegang om het luisterboek te downloaden.":改为中文提示,例如"你现在可以下载该产品了。" - 回复参数
cc:"MYEMAIL":替换为你的个人邮箱或群组邮箱
修复脚本缺失功能
原addMember函数仅定义了成员对象,未执行添加操作,需补充代码:function addMember (email, group) { var hasMember = group.hasUser(email); Utilities.sleep(1000); if(!hasMember) { var newMember = { email: email, role: "MEMBER", delivery_settings: "NONE" }; // 执行添加成员操作 group.addUser(email); } }配置Gmail标签与过滤器
脚本依赖label: "Access Request"筛选邮件,需在Gmail中创建名为Access Request的标签,并设置过滤器:将Google Drive发送的访问请求邮件自动打上该标签。过滤器可匹配发件人drive-shares-noreply@google.com、主题含“请求访问”的邮件。授权与设置触发
首次运行addtoGroup函数时,会弹出权限申请窗口,需授权脚本访问Gmail、Google群组等服务;之后在Apps Script的“触发器”页面设置定时触发(如每5分钟运行一次addtoGroup),与脚本中interval = 5参数对应。
账号关联说明
若你的Gmail、Google Drive、Google群组均属于同一Google Workspace账号,用该账号创建并运行脚本时,会自动关联所有服务——脚本权限基于当前登录账号,只要账号拥有对应服务的操作权限(如管理群组、读取Gmail、管理Drive权限),即可正常工作。
内容的提问来源于stack exchange,提问作者biggydeen

