GoogleAppsScript(GAS)でGmailのメールの内容を取得し、スプレッドシートに一括で表示しよう

みなさん、こんにちは!
現役エンジニアの”よし”です。

前回はGoogle Apps Scriptを使って、Gmailのメールの内容を取得する方法を紹介しました。

今回は取得した内容をスプレッドシートに表示するところを紹介していきます。

今回ももちろん、Googleが提供する公式ドキュメントに書いてありますが、
さらに分かりやすく、探す手間も省いて説明していきますね!

前回の記事はこちら

GoogleAppsScript(GAS)でGmailのメールの内容を取得しよう

復習

前回の記事ではGmailで内容を取得する方法を紹介しました。
コードは以下です。このまま貼り付けることができます。

function myFunction() {
   // メール(スレッド)取得①
   let mailThreads = GmailApp.search('to:mail@test.co.jp');
   Logger.log(mailThreads);

   // スレッドからメールを取得する②
   let threads = GmailApp.getMessagesForThreads(mailThreads); 
   Logger.log(threads);

  // スレッドごとに内容を取得する
  threads.forEach(function (thread) {
   // メッセージ内容を取得
   thread.forEach(function (message){
    // 送信日時
    let date = message.getDate();
    Logger.log(date);
    // 宛先
    let to = message.getTo();
    Logger.log(to);
    // 送信者
    let from = message.getFrom();
    Logger.log(from);
    // 件名
    let subject = message.getSubject();
    Logger.log(subject);
    // メール内容
    let body = message.getPlainBody(); 
    Logger.log(body);
   });
  });
}

Logger.log()は確認のために入れていますが、確認必要ない!という方は削除して問題ございません。

 

①スプレッドシートにデータをセットするsetValues()

スプレッドシートにデータをセットする方法はいくつかあります。
今回紹介する方法は一括でデータをセットできる方法です。
まとめてデータをセットしたい時は便利なので、ぜひ使ってみてください!

まずは、以下を用意しましょう。

  1. セットしたいシートを取得
  2. シートの一番上に表示する項目を用意する(配列)
  3. スプレッドシートに一括でセットするための空の配列を用意する
// シート
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
// 項目名
 let header = ["送信日時","宛先","送信者","件名","メール内容"];
// スプレッドシートに一括でセットするためのからの配列を用意する
 let messages = [];

スプレッドシートに一括でデータをセットする場合、「二次元配列」でデータを用意する必要があります。

2次元配列は、配列の中に配列を作るイメージです。
今回でいくと、messagesの中にセットするデータを詰めていきます。

②2次元配列にデータをセットしていく

2次元配列にデータをセットしていきましょう。

  1. ヘッダー(項目)を空の配列に詰める
  2. メール1個1個を配列に詰めていく

まずは空の配列messagesに項目headerを詰めます。

messages.push(header);
Logger.log(messages);

messagesの中身をLogger.log()で確認すると、配列の中に、配列が用意できていることがわかります!

次に、メールの内容をmessagesに詰めていきましょう!
前回までで用意したコードに以下を追記します。

messages.push([date, to, from, subject, body]);

完成形はこちらです。

function myFunction() {
   // メール(スレッド)取得①
   let mailThreads = GmailApp.search('to:mail@test.co.jp');

   // スレッドからメールを取得する②
   let threads = GmailApp.getMessagesForThreads(mailThreads); 

  // スレッドごとに内容を取得する
  threads.forEach(function (thread) {
  // メッセージ内容を取得
  thread.forEach(function (message){
   // 送信日時
   let date = message.getDate();
   // 宛先
   let to = message.getTo();
   // 送信者
   let from = message.getFrom();
   // 件名
   let subject = message.getSubject();
   // メール内容
   let body = message.getPlainBody(); 

   // 挿入用に配列にプッシュ
   messages.push([date, to, from, subject, body]);
   Logger.log(messages);
  });
 });
}

Logger.log()で確認すると、しっかり配列に詰められていることがわかります!

③スプレッドシートにデータをセットする

いよいよ今まで用意してきたデータをスプレッドシートにセットします。
データをセットするには以下を使います。
sheet.getRange(1,1,messages.length,messages[0].length).setValues(messages);

getRange()には、4つの項目を設定する必要があります。
getRange(開始行, 開始列, データ挿入行数, データ挿入列数)

なので今回は、
getRange(1,1,messages.length,messages[0].length)
としています。

データ挿入行数messagesの中身の個数(length)
データ挿入列数messagesの要素番号1のデータの個数
で問題ないです。

以上を踏まえて、以下がコード全文です。

function myFunction() {
 // シート
 let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
 // 項目名
 let header = ["送信日時","宛先","送信者","件名","メール内容"];
 // スプレッドシートに一括でセットするためのからの配列を用意する
 let messages = [];
 // メール(スレッド)取得①
 let mailThreads = GmailApp.search('to:mail@test.co.jp');

   // スレッドからメールを取得する②
   let threads = GmailApp.getMessagesForThreads(mailThreads); 

  // スレッドごとに内容を取得する
  threads.forEach(function (thread) {
  // メッセージ内容を取得
  thread.forEach(function (message){
   // 送信日時
   let date = message.getDate();
   // 宛先
   let to = message.getTo();
   // 送信者
   let from = message.getFrom();
   // 件名
   let subject = message.getSubject();
   // メール内容
   let body = message.getPlainBody(); 

   // 挿入用に配列にプッシュ
   messages.push([date, to, from, subject, body]);
  });
 });
 sheet.getRange(1,1,messages.length,messages[0].length).setValues(messages);
}

実際に実行してみましょう!
するとスプレッドシート「シート1」にデータがセットされているでしょう!

まとめ

いかがでしたでしょうか?しっかりデータはセットできたでしょうか?

データのセットが一括でできると、GASの実行時間も短く済みます。覚えていて損はないと思うので、これを機に試してみてはいかがでしょうか。

Google Workspaceを活用している場合はGoogle Apps Scriptを覚えると業務の効率化および自動化ができます。
Google Apps Scriptが学べるスクールはコチラで紹介しています。よかったら見てみてください。

Google Apps Scriptを学べるスクール3選

Google Apps Scriptが学べたらコチラの記事で収益化してみてはいかがでしょうか?

Google Apps Scriptのプロが教える!成功するGAS副業完全ガイド

以上、最後までお読みいただきありがとうございました。

最新情報をチェックしよう!