GAS(Google Apps Script)のGmailから受信日時のfrom-toを条件にして抽出しGoogleスプレッドシートに貼付するサンプルです。
目次
サンプル | Googleスプレッドシートを準備する |
from-toの日時を指定する | |
from-toを時分秒まで指定する(UNIX時間) | |
メールの作成日時の確認方法 |
Googleスプレッドシートを準備する
1.Googleスプレッドシートを新規作成します。
Gmailから受信日時とメールタイトルを指定して対象を抽出し、Google スプレッドシートのA3から下の列に作成日時(※)、B3から下の列にメールタイトルを貼り付けます。
※getDate()を使用すると作成日時が取得されます。
2.コードを作成するのでApps Scriptを開きます。
Google スプレッドシートの拡張機能からApps Scriptをクリックします。
from-toの日時を指定する
function testScript() {
// シートの取得と指定範囲のクリア
const sheet = SpreadsheetApp.getActiveSheet();
let line = 3;
sheet.getRange(line,1,50,2).clear();
// 受信日時のfrom-toとタイトルで対象のメールを取得
const threads = GmailApp.search('subject:"テストタイトル" after:2022/6/27 before:2022/7/13', 0, 30);
let messages = "";
// 受信日とメールのタイトルを取得
for (let i = 0; i < threads.length; i++) {
messages = threads[i].getMessages();
for (let j = 0; j < 1; j++) {
//for (let j = 0; j < messages.length; j++) {
sheet.getRange(line,1).setValue(messages[j].getDate()); //メールの作成日時
sheet.getRange(line,2).setValue(messages[j].getSubject());
line = line + 1;
}
}
}
GmailApp.searchの構文は以下です。
GmailApp.search( 'クエリ' [,開始位置,取得数] ) |
クエリで取得する条件を指定します。
subject:はメールタイトル、after:は受信日時のfrom、before:は受信日時のtoです。
subject,after,beforeはそれぞれ無くても問題ありません。
開始位置は数値で指定します。0を指定しています。
取得数も数値で指定します。最大30件としています。
上記の日時の指定の場合、2022/6/27 9:00:00から2022/7/13 9:00:00という意味になります。
15行目は、スレッドの先頭のみ取得するため1にしています。
16行目の場合は、スレッドの子のメールも取得します。
https://developers.google.com/apps-script/reference/gmail/gmail-app
https://support.google.com/mail/answer/7190?hl=ja
from-toを時分秒まで指定する(UNIX時間)
function testScript() {
// シートの取得と指定範囲のクリア
const sheet = SpreadsheetApp.getActiveSheet();
let line = 3;
sheet.getRange(line,1,50,2).clear();
// from日時
const d1 = new Date(2022,5,27,22,47); // 5は6月を表す (2022/6/27 22:47:00から)
const d2 = new Date(d1.getTime());
const fromDate = Math.floor(d2/1000).toString(); // ミリ秒を秒に変換
// to日時
const d3 = new Date(2022,6,13,13,35,31); // 6は7月を表す (2022/7/13 13:35:31まで)
const d4 = new Date(d3.getTime());
const toDate = Math.floor(d4/1000).toString(); // ミリ秒を秒に変換
const query = 'subject:"テストタイトル" after:' + fromDate + ' before:' + toDate;
// 受信日時とタイトルで対象のメールを取得
const threads = GmailApp.search(query, 0, 30);
let messages = "";
// 受信日とメールのタイトルを取得
for (let i = 0; i < threads.length; i++) {
messages = threads[i].getMessages();
for (let j = 0; j < 1; j++) {
//for (let j = 0; j < messages.length; j++) {
sheet.getRange(line,1).setValue(messages[j].getDate()); //メールの作成日時が表示される
sheet.getRange(line,2).setValue(messages[j].getSubject());
line = line + 1;
}
}
}
8-10行目と13-15行目はUNIX時間で指定しています。
UNIX時間とは、協定世界時(UTC)の1970年1月1日午前0時0分0秒からの経過秒数です。
メールの作成日時の確認方法
1.メールを開き、右上のアイコンをクリックしメッセージのソースを表示をクリックします。
2.作成日とその後の配信の秒数が表示されます。
関連の記事