gpt4 book ai didi

javascript - GmailApp、getDate 和排序

转载 作者:行者123 更新时间:2023-12-01 01:56:56 28 4
gpt4 key购买 nike

我有一个脚本可以提取 Gmail 中未读邮件的日期(我的想法是我想获取最早的未读电子邮件的日期)

function someFunction () {
var oldSearchQuery = "in:Inbox is:Unread"
var oldThread = GmailApp.search(oldSearchQuery, 0, 500);
for (var inc = 0; inc < oldThread.length; inc++) {
oldThread.forEach(function(messages){
messages.getMessages().forEach(function(msg){
var date = msg.getDate()
Logger.log(date)
});

但是,我想对日期进行排序以获取最旧的日期(或者,如果有人知道更好的方法,只需获取最旧的未读电子邮件)。我尝试使用排序和反转:

    Script as above but with ----
var date = msg.getDate()
date.sort();
date.reverse();
Logger.log(date)
});

但它不喜欢它,因为 getDate 返回的值不能很好地与排序配合。有人有什么想法吗?

编辑 ---------------------------------------------------------- ------------

更新以显示当前脚本和输出:

  for (var inc = 0; inc < oldThread.length; inc++) {
oldThread.forEach(function(messages) {
messages.getMessages()
.forEach(function(msg) {
var dates = msg.getDate()
var empty = []
empty.push(dates);
var sortedDateList = empty.sort(function(a,b){
return new Date(a) - new Date(b);
});
Logger.log(sortedDateList)
});

输出为:

[18-06-21 13:49:42:549 BST] [Wed Jun 20 02:08:24 GMT+01:00 2018]
[18-06-21 13:49:42:729 BST] [Tue Jun 19 16:15:19 GMT+01:00 2018]
[18-06-21 13:49:42:734 BST] [Wed Jun 20 02:08:24 GMT+01:00 2018]
[18-06-21 13:49:42:739 BST] [Tue Jun 19 16:15:19 GMT+01:00 2018]

我希望看到:

[18-06-21 13:49:42:729 BST] [Tue Jun 19 16:15:19 GMT+01:00 2018]
[18-06-21 13:49:42:734 BST] [Wed Jun 20 02:08:24 GMT+01:00 2018]
[18-06-21 13:49:42:739 BST] [Tue Jun 19 16:15:19 GMT+01:00 2018]
[18-06-21 13:49:42:734 BST] [Wed Jun 20 02:08:24 GMT+01:00 2018]

此外,不知道为什么它会在每封邮件中返回 2 个日期,看起来像是在重复自身?

最佳答案

这并不是您问题的完整解决方案,而是演示如何使用 Array 函数从消息中获取信息。

function getThreadStartDate_(thread) {
const messages = thread.getMessages();

var now = new Date();
var start = messages.reduce(function (earliest, msg) {
var msgStart = msg.getDate();
return (msgStart < earliest) ? msgStart : earliest;
}, now);
return start;
}

function getEarliestMatchingThread_(query) {
const threads = GmailApp.search(query);
// Sort descending, so we can call pop() to access the earliest one.
threads.sort(function (a, b) {
return getThreadStartDate_(b) - getThreadStartDate_(a);
});
return threads.pop();
}

上述的使用示例:

function foo() {
const oldest = getEarliestMatchingThread_("your query here");
Logger.log(oldest.getFirstMessageSubject());
}

请注意,有一个隐含的假设,即您所做的查询不会大到无法管理(如果是,Gmail 将抛出错误)。我还假设至少有一个线程与查询匹配。我建议不要依赖这些假设:)

引用文献:

关于javascript - GmailApp、getDate 和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50945311/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com