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アナリティクスを連携させ昨日分のアクセス数TOP3位のページタイトル及び合計アクセス数を取得する方法
GASとGoogleアナリティクスを連携させて「昨日分のアクセス数TOP3位のペ ...
-
-
GASのプログラム実行時間計測方法と各種制限についてのメモ
PHP等でプログラムを組んでいると、あまり実行時間について気にすることはなかった ...
-
-
GASでNintendo Storeをチェックし指定したソフトが〇円以下の際に通知する方法
Google Apps Scriptを利用してNintendo Storeをスク ...
-
-
GASで特定サイトにログインした後にスクレイピングを行う方法
Google Apps Scriptの勉強として特定サイトにログインし、その後に ...
-
-
GASとChatworkを連携してメッセージを送信する方法
Google Apps Scriptの勉強として「Chatwork」と連携させて ...
