Gmail邮件自动化标记:基于内容原始时间识别超24小时邮件
解决方案:基于Gmail内容时间戳自动标记邮件
嘿,针对你的两个问题,Gmail原生筛选器没法直接识别邮件内容里的时间戳,所以得靠Google Apps Script来实现自动标记的需求,我给你一步步拆解:
一、基础问题:如何根据邮件内容里的发送日期标记邮件
如果是手动操作,你可以先通过Gmail搜索框查找包含特定时间格式的邮件(比如搜索"Original sent: 2024-05-20"),然后手动选择邮件添加标签或星标。但如果要批量处理或者自动标记,就得用下面的脚本方案了。
二、自动标记发送方首次接收时间超24小时的邮件
这个需求需要脚本遍历回复邮件,提取内容里的原始时间戳,和回复发送时间对比后自动标记,具体步骤如下:
1. 开启Gmail API并创建脚本项目
- 打开Gmail,点击右上角设置→查看所有设置→「高级」标签→启用「Gmail API」,保存更改。
- 打开Google Apps Script平台,创建一个空白项目。
2. 编写核心脚本
下面的脚本会自动搜索回复给你的邮件,提取内容里的原始时间戳,判断时间差是否超过24小时,然后标记邮件(星标+自定义标签):
function markOldReplies() { // 替换成你的邮箱地址 const myEmail = "your-email@example.com"; // 搜索条件:只找回复给你的邮件,可根据需求调整(比如加-is:starred排除已标记的) const searchQuery = `to:${myEmail} is:reply`; // 获取匹配的邮件线程 const threads = GmailApp.search(searchQuery); threads.forEach(thread => { const messages = thread.getMessages(); // 取线程里最新的回复邮件 const latestReply = messages[messages.length - 1]; const replySendTime = latestReply.getDate(); const emailBody = latestReply.getPlainBody(); // 🔴 重点:根据你邮件里的时间戳格式修改正则! // 示例匹配「Original sent: 2024-05-20 14:30:00」这种格式 const timestampRegex = /Original sent: (\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/; const match = emailBody.match(timestampRegex); if (match) { const originalSendTime = new Date(match[1]); // 计算时间差(24小时=86400000毫秒) const timeDiff = replySendTime.getTime() - originalSendTime.getTime(); if (timeDiff > 86400000) { // 标记方式1:添加星标 thread.star(); // 标记方式2:添加自定义标签(先在Gmail里创建好「超过24小时回复」标签) const label = GmailApp.getUserLabelByName("超过24小时回复"); if (label) thread.addLabel(label); console.log(`已标记邮件:${thread.getFirstMessageSubject()}`); } } }); }
注意:一定要修改timestampRegex来匹配你邮件内容里实际的时间戳格式!比如如果时间戳是「Sent on: May 20, 2024 2:30 PM」,就得调整正则表达式适配这种格式。
3. 测试脚本
点击脚本编辑器的「运行」按钮,第一次运行会要求授权,按照提示允许脚本访问你的Gmail即可。运行后去Gmail里查看,符合条件的邮件应该已经被标记了。
4. 设置自动定时运行
为了让脚本自动定期检查,设置触发器:
- 点击左侧的时钟图标(触发器)→ 添加触发器
- 配置:
- 选择函数:
markOldReplies - 事件源:时间驱动
- 时间类型:比如「小时计时器」,每1小时运行一次(可根据需求调整频率)
- 选择函数:
- 保存后,脚本就会自动帮你处理符合条件的邮件了。
内容的提问来源于stack exchange,提问作者mcpherk
相关产品推荐
相关产品推荐

