google-apps-script - 使用 Google Apps 脚本根据上次回复 GMail 中的线程的日期添加标签
问题描述
我为我的 GMail 帐户创建了一个 Google Apps 脚本。它通过我的@ACTIONS 文件夹中的电子邮件,并根据它的年龄添加标签。
例如,这部分脚本在电子邮件超过一周时添加标签1 WEEK OLD :
var threads = GmailApp.search('label:@actions older_than:7d newer_than:14d -(label:1 WEEK OLD) ');
var label = GmailApp.getUserLabelByName("1 WEEK OLD");
for (var t in threads) {
threads[t].addLabel(label);
};
我还有其他的为 3 天、2 周和 30 天添加标签。当电子邮件被移出@ACTIONS 文件夹时,标签将被删除:
var threads = GmailApp.search('-(label:@actions) (label:1 WEEK OLD)');
var label = GmailApp.getUserLabelByName("1 WEEK OLD");
for (var t in threads) {
threads[t].removeLabel(label);
};
问题在于 Gmail 搜索功能:older_than 适用于线程中的初始电子邮件 - 而不是最终电子邮件。因此,即使稍后有回复,也会显示标签。例如,几个月前收到的一封电子邮件添加了 30 DAYS 标签,尽管它是在上周回复的。
有没有办法根据上次回复的日期添加这些标签 - 而不是原始电子邮件的日期。
完整的脚本在这里:https ://pastebin.com/Xdv8U5eV
谢谢!
解决方案
我解决了这个问题。我需要做一个 IF 语句getLastMessageDate()
:
var threads = GmailApp.search('label:@actions) older_than:1d newer_than:3d -(label:1 DAY OLD) ');
var label = GmailApp.getUserLabelByName("1 DAY OLD");
var minDays = 1 // Enter # of days
var maxDays = 3 // Enter # of days
var minDate = new Date();
var maxDate = new Date();
minDate.setDate(minDate.getDate()-minDays);
maxDate.setDate(maxDate.getDate()-maxDays);
for (var t in threads) {
if (threads[t].getLastMessageDate()>maxDate && threads[t].getLastMessageDate()<minDate )
{
threads[t].addLabel(label);
};
};
推荐阅读
- oracle - Oracle 数据库的代理 SQL
- yii2 - 如何延迟 yii2-queue 任务,直到所有先前的任务都完成?
- excel - 向下扫描一列,直到您点击文本,然后粘贴第一行和最后一行的编号
- excel - 如何复制相对于我的活动单元格的一系列单元格?
- swift - 通过进程运行脚本 - 找不到脚本
- c# - 字符串数组 GetLength(1) 工作替代
- python - 如何使用python在文件中有效地存储多个浮点数组
- c# - 使用 SSIS 包和脚本任务执行具有多个子报表的 SSRS 报表
- java - JavaFX + SQL:为 SQL 数据库的每一行添加 1 个带有 3 个 ComboBox 的新 HBox
- reactjs - 在 React 中使用下拉按钮