Gmailの受信メールを自動解析して、シートに自動で出力したいとき、マクロVBAでやろうとする人がいます。
しかし、Gmailの受信メールを解析するならマクロVBAよりGASを使うことをオススメします。GASとは、Google Apps Scriptの略で、Googleアカウントをもっていれば誰でも無料で使えるツールのことです。
GASを使えば、Gmailの受信メールを解析して、シートに出力可能です。もし、あなたがGAS初心者でも30分あれば、受信メール解析できるように解説しますので、このまま読み進めていってください。
目次
この記事を読めば、デキるようになること
この記事を活用すれば、Gmailの受信メールを解析できるようになります。具体的には以下のことができるようになります。
[1] Gmailの受信メールの受信日時、件名、送信者、本文
[2] 受信メールに添付されているファイルをGoogleドライブに自動保存
[3] 解析したいメールを件名や受信日時で絞り込む方法
[4] 必要であれば、エクセルシートとしてパソコン保管する
ここまでデキるようになるように分かりやすく説明していきます。
Gmailの受信メールを自動解析してシートに出力する!Google Apps Script(GAS)を使う
Gmailの受信メールを自動解析を行うには、マクロVBAよりGoogle Apps Script(GAS)の方がオススメです。その理由は、Gmailの解析であれば、GASのほうがVBAよりカンタンで早いからです。
もちろん、VBAでも出来なくはありませんが、少し複雑です。また解析に時間がかかります。
そのレベルに到達するより、GASを使うほうがカンタンです。この記事で紹介するプログラムをコピペして貼り付ければ、初心者でも30分程度あればデキるレベルです。
そもそもGASとは?Google版のマクロVBAのようなもの
エクセルマクロを使ってきた人にとって、GASというのは、初めて耳にするかもしれません。そもそもGASとは、Google Apps Script(GAS)のことで、Googleが提供するサービスです。
カンタンにいうと、Microsoftでは、VBAを利用して自動化プログラムを作成する一方で、GoogleではGASを使って自動化プログラムを作成します。
ただし、いくつか違いがあるので、以下で説明します。
違い1|VBAはVisual Basicで、GASはJavascriptをベースにしている
VBAは、Visual Basicというプログラム言語ですが、GASはJavascriptをベースにしたプログラムを書きます。そのため、VBAで作成したプログラムはそのまま使えません。基本的なプログラムの考え方は、同じですが、ところどころ書き方が異なります。
たとえば、VBAでは変数宣言するときDimをつかいますが、GASではvarを使います。他にも、書き方が違うので、VBAだけをやってきた人は、慣れる必要があります。
違い2|VBAはパソコンのCPU、GASはクラウド上のサーバーCPUでそれぞれ動く
Excelの場合、パソコンにファイルを保存し、マクロの実行もパソコンのCPUを使って行います。一方で、Google Spread Sheet(Google版のエクセル)では、ファイルもクラウド上で保存し、スクリプトの実行もクラウド上のサーバーCPUで行われます。
要するに、マクロVBAはあなたが所持しているパソコンで動くが、GASはウェブ上で動くということです。そのため、GASを使うには、ウェブにつながっている必要があります。
Gmailの受信メール解析|保存ファイルを保管、解析条件の変更からエクセルファイル化まで
Gmailの受信メール解析を行う方法をステップごとに紹介していきます。
ステップ1|Googleアカウントを作成
Googleアカウントを持っていない場合、アカウント作成から始めます。
Googleアカウントは、こちらのGoogleの公式サイトを利用ください。
ステップ2|使用するGoogleアカウントでログインする
自動返信をしたいGoogleアカウントでログインします。こちらから使用中のGoogleアカウントで問題ないかどうかを確認します。もし、他のアカウントがいい場合は変更します。
[1] をクリックすると、現在ログイン中のアカウントが表示されます。
[2] が、現在ログイン中のアカウントですので、このアカウントで自動返信しても問題ないことを確認します。
ステップ3|Google spread sheet(スプレッドシート)の作成
Google Spread Sheet(Googleスプレッドシート)を開きます。こちらをクリックして、下の画像の通りに、順番にクリックしていきます。
[1] Googleの機能一覧を開く
[2] スプレッドシートをクリック
[3] 空白をクリック
もし、[2]の部分にスプレッドシートが見当たらない場合は、「もっと見る」をクリックしてみてください。下のほうに見つかるはずです。
ステップ3|Google apps scriptを開く
Google apps scriptを開きます。スプレッドシートを開いた状態で、以下のようにクリックしていきます。
[1] ツールをクリック
[2] スクリプトエディタをクリック
そうすると、以下の画面が出力されます。
ステップ4|Google apps scriptのスクリプトをコピペする
Google apps scriptのコードウィンドウ(以下の画面の赤枠)にスクリプトを記入していきます。
以下のプログラムを上の画像の赤枠の部分にコピペします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
function contact_Gmail() { var rowNumber = 2; var mysheetname = 'Gmail解析_' + DateString(new Date()); var GmailSS = SpreadsheetApp.create(mysheetname); var mySheet = GmailSS.getSheets()[0]; mySheet.setName(mysheetname); mySheet.getRange(1,1).setValue(日時); mySheet.getRange(1,2).setValue(送信元); mySheet.getRange(1,3).setValue(件名); mySheet.getRange(1,4).setValue(本文); var newfolder = DriveApp.createFolder(mysheetname); var searchQuery = 'subject:(パソコンスキルの教科書)'; var threads = GmailApp.search(searchQuery, 0, 200); var mymsg=[]; var msgs = GmailApp.getMessagesForThreads(threads); for(var i = 0; i < msgs.length; i++) { mymsg[i]=[]; for(var j = 0; j < msgs[i].length; j++) { mymsg[i][0] = msgs[i][j].getDate(); mymsg[i][1] = msgs[i][j].getFrom(); mymsg[i][2] = msgs[i][j].getSubject(); var nbsp = String.fromCharCode(160); mymsg[i][3] = msgs[i][j].getPlainBody().replace(/<([^]*|'[^']*'|[^'>])*>|nbsp/g,'').replace(/;; | /g,'').substring(0,50000); } var myattachments = msgs[i][j-1].getAttachments(); //添付ファイルを取得 for(var k in myattachments){ newfolder.createFile(myattachments[k]); //ドライブに添付ファイルを保存 } } if(mymsg.length>0){ GmailSS.getSheets()[0].getRange(2, 1, i, 4).setValues(mymsg); //シートに貼り付け } } function DateString(date){ return date.getFullYear().toString() + date.getMonth().toString() + date.getDate().toString() + date.getHours().toString() + date.getMinutes().toString() + date.getSeconds().toString(); }; |
コピペしたら、以下のようになります。
次に、このスクリプトを保存します。
以下のような画面が出てくるので、
[1] スクリプトの名前(何でも問題ありません)を記入
[2] OKをクリック
と進めていきます。
ステップ5|動作チェックする
以下の虫のカタチをしたボタンをクリックします。
虫のボタンを押すと、「承認が必要が必要です」という画面が出てきます。「許可を確認」をクリックします。
アカウントを選択という画面が出てきます。現在ログインしているアカウントが上位に出てきますので、それをクリックします。
「このアプリは確認されていません。」と出てきますので、「詳細」をクリックします。
さらに、下の方に「無題のプロジェクト(安全ではないページ)に移動」と出てきますので、それをクリックします。
「無題のプロジェクトにアクセスを許可しますか?」と出ますので、許可をクリックします。
そうすると、新しくスプレッドシートが作成されて結果が出力されます。新しく作成されたスプレッドシートはこちらから確認できます。
スプレッドシートを開くと、解析結果が記載されています。
また、Googleドライブに、新しくフォルダが作成され、その中に添付ファイルが保存されます。新しく作成されたフォルダはこちらから確認できます。
フォルダをクリックすると、添付ファイルが保管されています。
ステップ6|Gmailの解析を行う
動作チェック後に、Gmailの解析を行う場合は、Google Apps Scriptの以下の赤枠で囲われた実行ボタンをクリックします。
そのたびに、新しいスプレッドシートと新しいフォルダが作成されます。
ステップ7|スプレッドシートをエクセルに変換する
必要であれば、スプレッドシートをエクセルに変換可能です。手順は以下の通りです。
Gmailの解析条件を変更したい
上記のステップ5のプログラムの15行目あたりの以下の一文を修正することで、解析する条件を変更可能です。
1 |
var searchQuery = 'subject:(パソコンスキルの教科書)'; |
このプログラムの右辺を変更することで検索条件を変更可能です。
未読のみを検索|is:read, isunread
未読のみを解析したい場合
1 |
var searchQuery = (is:unread); |
件名で絞り込む|subject
1 |
var searchQuery = 'subject:(パソコンスキルの教科書)'; |
本文、件名などのどこかに含まれる
1 |
var searchQuery = '(パソコンスキルの教科書)'; |
特定のメールアドレス
1 |
var searchQuery = from:sample@mail.com; |
1 |
var searchQuery = to:sample@gmail.com; |
fromは送信元、toは送信先です。
日時
所定の日より後
1 |
var searchQuery = (after:2004/04/16); |
所定の日より前
1 |
var searchQuery = (before:2004/04/18); |
2つ以上の条件で絞り込む
「未読」と「’パソコンスキルの教科書’が含まれる」の2つの条件で絞り込みたい場合は、以下のように記載します。
‘(is:unread “パソコンスキルの教科書”)’; 2つの条件を半角スペースで空ける
var
1 |
var searchQuery = '(is:unread パソコンスキルの教科書)'; |
注意|添付ファイルのエクセルがスプレッドシートに紛れ込む
このプログラムを利用して解析したとき、添付ファイルにエクセルが含まれると、以下のようにスプレッドシートのフォルダにエクセルが紛れ込むので、注意してください。
もっとラクをしたいなら
Google Apps scriptを使えば、いろいろなシステムを構築できます。
たとえば、以下のような事です。
・Googleフォームに回答した人に自動返信する
・フォームから申し込みがあったときに、Chatworkに自動通知させる
・Gmailの受信メールを解析してスプレッドシートに一覧にする
・定期的にリマインドを指定したメールアドレスやChatworkに通知する
ぜひGoogle Apps scriptを学んでみてください。