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

使用Google Apps Script删除垃圾邮件时遇Invalid User ID错误求助

解决Gmail Apps Script永久删除垃圾邮件的权限&代码问题

问题根源

你遇到的错误主要来自两个代码细节问题,加上可能未启用Gmail高级服务:

  1. me没加引号,被当成未定义变量,而非Gmail API认可的特殊用户ID值
  2. getId.toString()写法错误,应该调用getId()方法(缺少括号)
  3. 你用了删除单条消息的接口,但操作对象是邮件线程,逻辑上更适合直接删除整个线程

修正步骤

  1. 启用Gmail高级服务
    在脚本编辑器顶部,点击「服务」→「添加服务」,找到「Gmail」并添加启用(这一步必须做,否则Gmail.Users相关接口无法调用)

  2. 修正后的完整代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:57:44