使用Google Apps Script删除垃圾邮件时遇Invalid User ID错误求助
解决Gmail Apps Script永久删除垃圾邮件的权限&代码问题
问题根源
你遇到的错误主要来自两个代码细节问题,加上可能未启用Gmail高级服务:
me没加引号,被当成未定义变量,而非Gmail API认可的特殊用户ID值getId.toString()写法错误,应该调用getId()方法(缺少括号)- 你用了删除单条消息的接口,但操作对象是邮件线程,逻辑上更适合直接删除整个线程
修正步骤
启用Gmail高级服务
在脚本编辑器顶部,点击「服务」→「添加服务」,找到「Gmail」并添加启用(这一步必须做,否则Gmail.Users相关接口无法调用)修正后的完整代码
function setTrigger() { ScriptApp.newTrigger('deleteForever') .timeBased() .everyMinutes(1) .create() } function deleteForever() { var threads = GmailApp.search("in:spam"); for (var i = 0; i < threads.length; i++) { var msg = threads[i].getMessages()[0]; console.log(i) if (msg.getPlainBody().match(/truck|car|(you won)/gi) !== null){ console.log('Found It!') // 用字符串' me '指代当前授权用户,调用getId()获取线程ID,直接删除整个线程 Gmail.Users.Threads.remove('me', threads[i].getId()); } } }
关键修改说明
'me'是Gmail API为当前授权用户预设的特殊ID,必须用字符串包裹,无需硬编码个人邮箱地址getId()是GmailThread对象的方法,必须加括号才能正确获取线程ID字符串- 改用
Gmail.Users.Threads.remove直接删除整个垃圾邮件线程,比删除单条消息更彻底,符合垃圾邮件的存在形式
内容的提问来源于stack exchange,提问作者crjunk
相关产品推荐
相关产品推荐

