个人谷歌账号运行unbound脚本出现This app is blocked报错求助
Google Apps Script运行报错修复及脚本优化方案
"This app is blocked"报错原因及修复方法
报错核心原因
- 谷歌对请求Gmail读写、删除等高敏感权限的未验证个人脚本有安全拦截策略,你的unbound脚本未经过官方应用验证,被系统判定为高风险操作直接拦截
- 你的Google账号安全设置中,禁用了未验证第三方应用的访问权限
- 账号开启了Google高级保护计划,该模式默认禁止所有未经过官方审核的应用/脚本访问敏感数据
对应修复方案
- 重新触发脚本授权,在出现“此应用未经过Google验证”的拦截页时,点击页面下方的高级按钮,选择「前往[你的脚本项目名称](不安全)」,按照指引完成权限授予即可,个人自用脚本不会产生安全风险
- 进入Google账号「安全」设置页,找到「第三方应用与账号访问」模块,确保未开启“禁止未验证应用访问账号数据”的限制
- 若你开通了Google高级保护计划,需要先暂时关闭该计划,或者将脚本提交为工作区内部验证应用后再运行
多标签批量清理优化脚本
不需要为39个文件夹创建独立脚本,你可以将所有需要清理的标签名存入数组,通过单次循环完成全部清理任务,仅需修改数组内的标签名称即可,统一保留原有搜索规则,优化后的代码如下:
/* 批量删除指定标签下满足条件的邮件,单次运行处理所有配置的标签 仅需修改LABEL_LIST数组内的标签名称即可,搜索规则可统一调整 */ function batchDeleteAllLabelEmails() { // 此处配置你所有需要清理的39个文件夹的标签名,替换成你自己的标签即可 const LABEL_LIST = [ "标签1名称", "标签2名称", "标签3名称", // 依次补充剩下的36个标签名 ]; const batchSize = 100; // 单次处理100个线程,避免接口限流 const searchRule = " AND older_than:6m AND is:read"; // 统一的搜索规则,可按需修改 for (let i = 0; i < LABEL_LIST.length; i++) { const currentLabel = LABEL_LIST[i]; const threads = GmailApp.search(`label:${currentLabel}${searchRule}`); for (let j = 0; j < threads.length; j += batchSize) { GmailApp.moveThreadsToTrash(threads.slice(j, j + batchSize)); } } }
优化后仅需要为该脚本设置1条每月1号自动运行的触发规则即可,不需要维护39个独立脚本和触发任务,也能避免重复授权的问题。
内容的提问来源于stack exchange,提问作者user3279926
相关产品推荐
相关产品推荐

