Googleスプレッドシート上でGmailの受信データを取得
Googleスプレッドシートは、Googleが作成したものなので、他のGoogleサービスとの連携が得意です。
前回はGoogleのプログラム機能(Google Apps Script)を使って、Gmail送信方法について紹介しましたが、今回は、Googleスプレッドシート上でGmailの受信データを取得する方法について紹介します。
日々、たくさんのメールを受ける中で、大切なメールを見落としたり、返信ができていなかったということは無いでしょうか?
この機能を使えば、大切なメールの受信をスプレッドシートでリスト化し、処理状況を把握することが可能となります。
使用する関数
使用する関数は、
「GmailApp.search」と「GmailApp.getMessagesForThreads」
です。
「GmailApp.search」は、Gmail内のメールを検索し、条件に一致するデータを取得する関数です。
・検索条件(メールの検索条件)
・取得開始位置(何件目から)
・取得件数(何個:最大500件)
という条件を入力して使用します。
「GmailApp.getMessagesForThreads」は、メールのメッセージの各種データを呼び出しやすいように配列化する関数です。
・件名(タイトル)
・受信日時
・送信元
・送信先
・本文
などが、格納されています。
ポイント
ここで重要なのが検索条件です。関数で抽出できるメールの数には上限があります。検索条件で抽出するメールの数をできるだけ絞る必要があります。
検索条件には、「件名」「送信元」「受信アドレス」「期間」などがあります。これらの条件を「And/Or/Not」を使って複数個、組み合わせて抽出します。
詳細はこちら
プログラム(スクリプト)
では、実際の簡単なスクリプトの例を紹介します。スクリプトエディタを開いて、こちらを入力します。
スクリプトエディタの開き方はこちら
function receive_Mail() { //シート名の設定(「シート名」を変更して下さい) var sheet= SpreadsheetApp.getActive().getSheetByName('シート名'); // Gmailから検索条件に一致するメールを取得 var strTerms = 'category:primary'; var myThreads = GmailApp.search(strTerms, 0, 5); //条件にマッチしたスレッドを取得 var myMsgs = GmailApp.getMessagesForThreads(myThreads); //配列に格納 var valMsgs = []; var matomeArray = []; // 各メールから日時、送信元、件名、本文の最初を取得 for(var i = 0;i < myMsgs.length;i++){ valMsgs[i] = []; valMsgs[i][0] = myMsgs[i][0].getDate(); valMsgs[i][1] = myMsgs[i][0].getFrom(); valMsgs[i][2] = myMsgs[i][0].getSubject(); valMsgs[i][3] = "'"+myMsgs[i][0].getPlainBody().slice(0,50); matomeArray.push([valMsgs[i][0],valMsgs[i][1],valMsgs[i][2],valMsgs[i][3]]) } /* スプレッドシートに出力 */ if(myMsgs.length>0){ sheet.getRange(2, 1, myMsgs.length, 4).setValues(matomeArray); //シートに貼り付け } }
ポイントは、検索条件「’category:primary’」。これは、Gmailの「メイン」タブに入るメールを抽出するというもの。この例では、「メイン」タブに入っているメールの最新5件のデータを抽出し、日時、送信元、件名、本文の最初の50文字をシートに表示します。
まとめ
今回は、Googleスプレッドシート上でGmailの受信データを取得する方法について紹介しました。次回は、検索条件をうまく使ってGmailで特定の条件のメールだけをリスト化する方法を紹介します。