GASを利用してGmailに届いたメール内容をGoogleスプレッドシートに記入する方法
WordPressのContact Form7から送信した内容をGmailで受け取り「受信日時」「送信メールアドレス」「件名」「本文」をGoogleスプレッドシートに記入したい。Google Apps Scriptと連携させることで容易に対応できそう。以下に実装方法をメモ。
目次
スプレッドシートの準備
以下のように1行目に項目名を追記しておく。
Contact Form7の準備
題名(メールの件名)を以下のように設定しておく。
【GASテスト】問い合わせ通知
尚、今回は実験も兼ねているのでContact Form7を利用しているが、PHPで作成したフォームの場合なども題名を分かりやすいものに設定しておくとよい。
GAS
ソースコード
function getMail(){ //スプレッドシートの読み込み const sheet = SpreadsheetApp.getActiveSheet(); //読み込んだシートの最終行を取得する const last = sheet.getLastRow(); //シートが未記入の場合 if( last == 1 ){ //昨日分のタイムススタンプを取得 var last_date = parseInt(((new Date()).getTime() - 1 * 60 * 60 * 1000) / 1000); }else{ //最新データに+1したタイムスタンプを取得 var last_date = new Date(sheet.getRange(`A${last}`).getValue()); last_date = parseInt(last_date.getTime()) / 1000 + 1; } //件名を指定して検索 const query = `after:${last_date} subject: 【GASテスト】問い合わせ通知`; //開始行 const start = 0; //終了行 const max = 10; //メールの検索 const threads = GmailApp.search(query, start, max); const mail_data = []; //メールの取得 const messagesForThreads = GmailApp.getMessagesForThreads(threads); for(const messages of messagesForThreads){ const message = messages[0]; const record = [ message.getDate(), message.getFrom(), message.getSubject(), message.getPlainBody().slice(0,200) ]; mail_data.push(record); } if(mail_data.length > 0){ SpreadsheetApp.getActiveSheet().getRange((last + 1), 1, mail_data.length, mail_data[0].length).setValues(mail_data); } }
解説等
検索条件部分
件名が「【GASテスト】問い合わせ通知」且つタイムスタンプを指定し検索している。
尚、リファレンスではafter / beforeは年月日指定のみ表記されており日時指定は表記されていないが、こちらのサイトによるとUNIXタイムスタンプで日時も指定できるとのこと。
注意点
以前にも書いたがsearch時の上限に気を付けること。
取得したデータを上の行に追記していきたい場合
上記のソースコードだと取得したデータはシートの下に追記されていく。これを逆にしたい(上の方に追記していきたい)場合は以下部分を変更すること。
#変更前 SpreadsheetApp.getActiveSheet().getRange((last + 1), 1, mail_data.length, mail_data[0].length).setValues(mail_data); #変更後 SpreadsheetApp.getActiveSheet().insertRows(2, mail_data.length); SpreadsheetApp.getActiveSheet().getRange(2, 1, mail_data.length, mail_data[0].length).setValues(mail_data);
insertRowsで更新データ分の行を2行目以降に挿入し、挿入した行にデータを書き込むという形。
関連記事
-
GASを使ってみて感じたメリットとデメリット
Google Apps Scriptを色々勉強した中で感じたメリットとデメリット ...
-
GASで特定サイトをスクレイピングし、画像をGoogleドライブに保存
Google Apps Scriptで特定のサイトにスクレイピングし、画像が掲載 ...
-
GASとDrive APIを組み合わせて画像やPDFファイルをOCR処理する方法
Googleドライブに保存した画像やPDFファイルをOCR処理し、ファイル内のテ ...
-
GASで祝日一覧(年月日と祝日名)データをJSON出力するAPIを作成
PHPのシステム案件で祝日を取得し、処理を行う箇所があった。Googleカレンダ ...
-
GASを使って任天堂ホームページ更新情報のRSSを取得する方法
GASを使ってRSSを取得してみたい。今回はニンテンドーホームページ更新情報とい ...