目次
01. GAS Gmailから抽出しgoogleスプレッドシートに貼付
・目的
目的
GASでGmailから抽出してGoogleスプレッドシートに貼り付けます。
Gmailから抽出してGoogleシートに貼り付ける
1.Gmailのメールタイトルを指定して対象を抽出します。
2.Google スプレッドシートのA3から作成日時(受信日時)とメールタイトルを貼り付けます。
3.メールは、最新のメールから5件取得してGoogleスプレッドシートに書き込まれます。
function myFunction() {
// スプレッドシートのID
const sheetId = "スプレッドシートのID";
// シート名
const sheetName = "シート1";
// メールタイトル
const query = "subject:ご利用状況のお知らせ";
// 開始位置
const start = 0;
// 取得数
const end = 5;
const sheet1 = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName);
const threads = GmailApp.search(query,start,end)
let messages = "";
let line = 3;
// ループで取得
for (let i = 0; i < threads.length; i++) {
messages = threads[i].getMessages();
for (let j = 0; j < messages.length; j++) { // スレッドの子のメールも取得
//for (let j = 0; j < 1; j++) { // スレッドの先頭のみ取得場合
sheet1.getRange(line,1).setValue(messages[j].getDate()); //受信日時
sheet1.getRange(line,2).setValue(messages[j].getSubject()); //タイトル
sheet1.getRange(line,3).setValue(messages[j].getPlainBody()); //本文
line = line + 1;
}
}
}
7行目のsubject:はメールタイトルです。完全一致のみしかできません。
14行目のGmailApp.searchの構文は以下です。
GmailApp.search( 'クエリ' [,開始位置,取得数] ) |
クエリで取得する条件を指定します。
開始位置は数値で指定します。0を指定しています。
取得数も数値で指定します。最大5件としています。
22行目の場合は、スレッドの子のメールも取得します。
スレッドの先頭のみ取得する場合は23行目のように1にします。
getDate()を使用すると作成日時(受信日時)を取得します。
Gmailの抽出条件に開始日時と終了日時を指定する
function myFunction() {
// スプレッドシートのID
const sheetId = "スプレッドシートのID";
// シート名
const sheetName = "シート1";
// 検索する開始日時(from)
const fromDate = 'after:2024/02/27';
// 検索する終了日時(to)
const toDate = 'before:2024/05/10';
// メールタイトル
const query = 'subject:ご利用状況のお知らせ' + " " + fromDate + " " + toDate;
// 開始位置
const start = 0;
// 取得数
const end = 5;
const sheet1 = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName);
const threads = GmailApp.search(query,start,end)
let messages = "";
let line = 3;
// ループで取得
for (let i = 0; i < threads.length; i++) {
messages = threads[i].getMessages();
for (let j = 0; j < messages.length; j++) { // スレッドの子のメールも取得
//for (let j = 0; j < 1; j++) { // スレッドの先頭のみ取得場合
sheet1.getRange(line,1).setValue(messages[j].getDate()); //受信日時
sheet1.getRange(line,2).setValue(messages[j].getSubject()); //タイトル
sheet1.getRange(line,3).setValue(messages[j].getPlainBody()); //本文
line = line + 1;
}
}
}
8-10行目と13-15行目はUNIX時間で指定しています。
UNIX時間とは、協定世界時(UTC)の1970年1月1日午前0時0分0秒からの経過秒数です。
メールの作成日時の確認方法
1.メールを開き、右上のアイコンをクリックしメッセージのソースを表示をクリックします。
2.作成日とその後の配信の秒数が表示されます。
関連の記事