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とChatworkを連携してメッセージを送信する方法
Google Apps Scriptの勉強として「Chatwork」と連携させて ...
-
-
GASを使ってみて感じたメリットとデメリット
Google Apps Scriptを色々勉強した中で感じたメリットとデメリット ...
-
-
GASとDrive APIを組み合わせて画像やPDFファイルをOCR処理する方法
Googleドライブに保存した画像やPDFファイルをOCR処理し、ファイル内のテ ...
-
-
GASで祝日一覧(年月日と祝日名)データをJSON出力するAPIを作成
PHPのシステム案件で祝日を取得し、処理を行う箇所があった。Googleカレンダ ...
-
-
GASでGoogleカレンダーと連携してイベントの取得・追加・削除
Google Apps Scriptの勉強としてGoogleカレンダーと連携させ ...
