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.作成日とその後の配信の秒数が表示されます。

関連の記事

GAS substring 文字列を切り出す(Google Apps Script)

△上に戻る