如何仅从电子邮件日期中提取年份

How to extract year only from email date

我正在阅读整个 Gmail 电子邮件 (inbox/sent/trash...),并尝试根据日期在 google 驱动器中创建文件夹。

所以文件夹应该分类为 (...,2019,2020,2021)。每个文件夹包含我Gmail里今年的所有邮件。

我设法创建了文件夹,通过使用 Threads 获取消息,所有这些工作正常,但我无法仅提取消息的年份。

当我使用 Threads[0].getMessages()[0].getDate() 时,返回的是 date and time of this message.,我无法仅从中提取年份。

有没有办法让我从这种格式中只提取年份。


这是我试图获取我正在使用的日期的脚本的一部分。

function GetAttachmentsWithTime() {
    var sheet = SpreadsheetApp.getActiveSpreadsheet();
    sheet.setActiveSheet(sheet.getSheetByName('Sheet1'));
    var start = 0;
    var end = 10;
    var filter = "has:attachment";
    var threads = GmailApp.search(filter,start,end);
    Logger.log(threads[0].getMessages()[0].getDate())
}

您使用的是 V8 运行时吗?

如果是,请参阅 this migration guide。它说:

In the V8 runtime, Date.prototype.getYear() returns the year minus 1900 instead as required by ECMAScript standards.

所以 2020 年的电子邮件将 return 120(即 2020 - 1900 = 120)。

要解决此问题,请使用 .getFullYear():

When migrating your script to V8, always use Date.prototype.getFullYear(), which returns a four-digit year regardless of the date.