Gmailから必要な情報だけを集めることができます。
GAS(Google App Script)を使って、メルマガの内容を書き出してみました。
GAS(Google App Script)とは?
GAS(Google App Script)というのは、Googleサービスで利用するプログラミング言語です。Google App Scriptの頭文字だけをとってGAS(ガス)というのが通称です。
GmailやGoogleカレンダー、GoogleドライブといったGoogleのサービスについて、GASを使うことで自動化させることができます。
GAS(Google App Script)を使うには、Googleドライブの新規から起動するか、
GoogleスプレッドシートやGoogleドキュメントの拡張機能から起動することができます。
Gmailからメルマガの本文だけを書き出すには?
まずはGASを起動してみましょう。
メルマガの本文だけを書き出すために書いたプログラムです。Gmailから抽出したメルマガの内容をログで書き出します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function getMagazine(){ var tytle = 'subject:(GO方見聞録)'; var start = 0; var max = 10; // 指定の数だけメールを探す var threads = GmailApp.search(tytle,start,max); var messages = GmailApp.getMessagesForThreads(threads); // メルマガの本文を抽出 for(i=max-1;i>start;i--){ var body = messages[i][0].getPlainBody(); Logger.log(body.split('mailconsulting')[1].split('それでは。') [0]) } }; |
これを実行すると、
実行ログとしてメルマガの内容が表示されます。
指定した件数分を書き出すことができました。
このログをコピーして
Googleドキュメントなどにコピペすると、2つ目以降の「14:14:26 情報」という文字もコピーされます。
この情報を消したければ、この文字列を空白に置き換えれば、メルマガの本文だけを拾えます。
GASを最初に実行するときの注意点
GASを最初に実行するときには、このような承認画面が表示され、
アカウントを選ぶと、
怪しい画面になりますが、そのまま詳細をクリックします。
そのまま、許可をすれば大丈夫です。
メルマガの型を分析することが攻略の一歩
では、今回のプログラムの解説をしてみます。
メルマガを抽出する
まずはメルマガだけをGmailから検索する必要があります。 タイトルを探すわけです。
タイトルを探すには、Gmailの検索窓の右にある検索の詳細をクリックし、
件名に探したいタイトルをコピペしましょう。
すると、subject:(GO方見聞録) と表示されます。これをGASの変数として定義します。
次に「start」と「max」ですが、これはデータの始めと終わりです。
Gmailの検索だとGASのルールがあります。他にもいろいろあります。
「start」を1でなく0としているのは、プログラミングならではです。
実は、プログラミングでデータを数えるときは「1」からではなく「0」から始まります。
なので、0から10としています。10は何個抽出したいかで変更します。
次にGmailを動かします。
ここで検索をしています。
1 |
var threads = GmailApp.search(tytle,start,max); |
で、さっき定義した「tytle,start,max」をもとにGmailから検索しています。
タイトルで検索し、1つ目から指定した数だけを選び、
その探したスレッドからメッセージを探します。
1 |
var messages = GmailApp.getMessagesForThreads(threads); |
で、探したスレッドから本文の必要なところだけを抽出します。
まず、下記にある必要な部分だけ抽出して、ログを書き出すという処理を解説します。
1 2 3 |
var body = messages[i][0].getPlainBody(); Logger.log(body.split('mailconsulting')[1].split('それでは。') [0]) |
本文のうち必要な部分だけを「sprit」を使って分割しています。
メルマガの書き出し部分は必要ありません。今回欲しいのは本文だけ。
メルマガ本文の手前にある情報は必要ありません。そこで分割したい区切りになる「mailconsulting」という文字をキーにしてデータを分割します。
「body.split(‘mailconsulting’)[1]」というように。
2つに分けたメルマガ本文のデータのうち、後ろ部分だけが必要なので、[0][1]と2つに分けたデータのうち、[1]を選んでいるわけです。
これで抽出したい最初の部分は決まりました。
次は末尾の部分です。
同じように、最後の手前で「それでは。」をキーにして分割。今度は分けた最初のデータだけがほしいので、2つのデータ[0][1]のうちの[0]を選びます。
今度は「それでは。」をキーに分割します。
で、「body.split(‘mailconsulting’)[1].split(‘それでは。’) [0]」と続けることによって、抽出したい最初と最後を決めています。
これでメルマガの本文だけを抽出できました。
数日分のデータをとる
これだけだと1日分しかメルマガのデータをとることができません。
そこで「for(i=max-1;i>start;i–){…}」で今の処理を繰り返しています。
繰り返し処理は本来、「for(i=start;i<max;i++)」とします。
「i=start」の「i」は変数、「start」は0、「i<max」で「10」まで。
繰り返しを「i++」とすることで「0、1,2,3…10」と変わっていきます。
ところが0から始めると、上に表示されている直近のメルマガからデータをとってしまいます。
そこで逆からデータを処理するようにして、それを「for(i=max-1;i>start;i–)」と書いています。
iは「10−1=9(10番目)」からスタートし、「8、7、6…0」とカウントしています。
これで、古い日付から順にデータをとることが可能です。
Gmailからデータを抽出するときには、そのメールの型を見つけることが大事です。
メルマガのデータ、スタンドからも取れるのですが、本文だけがとれるこの方法を試してみました。
参考にしていただければ。
【編集後記】
昨日はオフ。雨でしたが気分転換でカフェに。メルマガやブログを書いてから図書館に。夜は読み聞かせでしたが、先に寝てしまったみたいです。
【昨日の1日1新】
※「1日1新」→詳細はコチラ
GASでメルマガのデータ抽出