Google Apps Scriptでメルマガを分析する

GASgetLastRow,gmail,GmailApp

前回はGoogle Apps Scriptで自分のGメールボックスにある特定メールの情報をスプレッドシートに抽出しました。

今回は応用として、特定競合のメールマガジンの分析をしてみます。

対象アドレスのメール情報を抽出するスクリプト

条件設定とGメール抽出用のコード

まずは特定条件でメール情報を抽出するスクリプトを書くために条件を設定します。

今回は、2021年に届いたヤマダデンキさんのメールマガジンを対象としてみるので、条件は下記を指定します。

  • 対象のアドレス:noreply@tpgaw.jp
  • 対象の受信期間:2021年1月1日以降

また、分析するために<受信日><受信曜日><件名>の情報を格納できるように記述することにします。

function getGmail() {

  //Gmail取得ここから
  //Gmailの履歴からマッチするメールを一覧化
  var threads = GmailApp.search('from:tpgaw.jp after:2021/01/01');

  var gmailinfo = [];   
  var array = []; 
  
  //一覧化したメールの件数分繰り返し 
  threads.forEach(function(thread) {
    // スレッド内のメール一覧を取得
    var messages = thread.getMessages();
    
    // メールを一つずつ取り出す
    messages.forEach(function(message) {

      var date = message.getDate();
      var weekday = date.getDay();
      var subject = message.getSubject();
      // Logger.log(subject,body,date);

      array = {
        'date': date,
        'weekday': weekday,
        'subject': subject
        };
      
      gmailinfo.push(array);
    });
  
  });

  //  Logger.log(gmailinfo);
   return(gmailinfo); 
}

それでは一つずつ解説していきます。

GmailApp.searchで抽出するメールの条件指定

  var threads = GmailApp.search('from:noreply@tpgaw.jp after:2021/01/01');

自分のメールボックスから抽出するには、GmailApp.searchメソッドを使います。

記載方法は、 条件指定を('<条件>’)で、カッコ内で条件をクォーテーション囲めば対象となる情報を持ってきてくれます。

今回は、noreply@tpgaw.jpから受信(from:noreply@tpgaw.jp)、2021年1月1日以降に受信しタメール(after:2021/01/01)を連続して記載しています。

その他の指定可能な条件は下記を参考にしてみてください。

自分のGメールボックスでのフィルタ条件の記述をそのまま使えるので、一回メールボックスで条件指定してみてそのまま転記するのが一番楽かもしれません。

スレッド化したメールから対象データを配列に格納

  //一覧化したメールの件数分繰り返し 
  threads.forEach(function(thread) {
    // スレッド内のメール一覧を取得
    var messages = thread.getMessages();
    
    // メールを一つずつ取り出す
    messages.forEach(function(message) {

スレッド内のメール数分繰り返し処理するためのおまじないのような記述です。getMessage()メソッドでメール情報を持つmessage変数を定義しておきます。

      var date = message.getDate();
      var weekday = date.getDay();
      var subject = message.getSubject();
      // Logger.log(subject,body,date);

      array = {
        'date': date,
        'weekday': weekday,
        'subject': subject
        };
      
      gmailinfo.push(array);
    });
  
  });

  //  Logger.log(gmailinfo);
   return(gmailinfo); 

今回は <受信日><受信曜日><件名> の情報が欲しいので、getMessage()メソッドに続けて、下記のように記述します。

  • 受信日:message.getDate();
  • 受信曜日:date.getDay();
  • 件名:message.getSubject();

また、それぞれ名前を付けてあらかじめ宣言しておいたarray・gmailinfという名前の変数を使って、ループ毎に各メール情報を配列化して完成です。

スプレッドシートに書き出す

上パートまでで、getGmail()という関数を呼び出せば、条件指定したメール(今回は2021年1月1日以降に届いたヤマダデンキさんのメールマガジン)の、特定データ(今回は<受信日><受信曜日><件名>)を配列で受け取れるようにできました。

これらの情報をスプレッドシートに書き込みます。

function mtFunction(){

     var gmail = getGmail();

 
      // 書き込むシートを取得
      var sheet = SpreadsheetApp.getActive().getActiveSheet();
      
      // 最終行を取得
      var lastRow = sheet.getLastRow() + 1;
      var i = 0;
      
        gmail.forEach(function(gmail) {

          // セルを取得して値を転記
          sheet.getRange(lastRow+i, 1).setValue(gmail['date']);
          sheet.getRange(lastRow+i, 2).setValue(gmail['weekday']);
          sheet.getRange(lastRow+i, 3).setValue(gmail['subject']);

          i = i+1;

        })

}

A列に受信日、B列に受信曜日、C列に件名と列名を予め記載しておき、メール1通単位で格納している配列の要素ごとに書き出しを実行していけば完成です。

書き出し結果はこのようになりました。(2021年12月21日時点のデータです)

曜日データは曜日番号(日曜日:0、月曜日:1、…、土曜日:7)になっているので、分析するときは別の列で参照して置き換えを行ってください。

また、件名には[ヤマダモール]や[ヤマダウェブコム]といったテキストが含まれているので、形態素分析等を実施する際は除外処理をしてからのほうが良さそうですね。

スクリプト中段で使っているスプレッドシートのデータ最終行を取得するgetLastRowメソッドは下記の記事で詳しめに解説しています。

競合メルマガを分析してみる

受信日と受信曜日のデータがあるので、ヤマダデンキを競合メルマガとした時、送信頻度や送信曜日等の戦略についてシンプルに分析してみたいと思います。

何曜日にメルマガを送っているか?

2021年のうち、メルマガが送付された回数が何曜日が一番多かったでしょうか?

答えは「火曜日」でした。

※あくまで筆者のメールボックスに届いているメールのみを対象としているので、会員ランクや過去のアクション履歴等によってセグメント分けて配信している場合は別傾向である可能性があります。

素人目線だと火曜日に一番配信が多いのは意外な結果のような気がします。休日に購入が増えるのではないかと思うと、週後半(特に金曜や土曜)に配信したほうが直接購入に結びつきやすいのではと思うからです。

基本の目的はWeb購入への誘導がありつつも店舗送客も見据えて、土日の予定を検討しやすい週前半に注力して送っているのかも知れませんね。

1年間で配信傾向は変わったか?

続いて週次で時系列の推移を見てみましょう。

2021年3月までには火曜/土曜の週2通が多かったのが、4月以降は曜日にあまり偏りなく送っていることがわかります。

筆者の会員ステータスが変わり配信に反映された可能性もありますが、3月~4月で購入等のアクションを起こした記憶はないので、もしかしたら年度をまたいでメルマガの方針が変わったのかもしれません。

メルマガを送っている時間帯は何時が多いか?

メルマガを「何曜日に送るか」と同じくらい「何時に送るか」が重要です。

通常、企業向けであれば早朝、個人向けであれば朝や夜の通勤時間帯、商材によってはランチ時間に送ると反響を得やすい、といった具合に最適な時間帯が異なるからです。

特にヤマダデンキさんほどの規模感であれば過去の積み重ねにより、ある程度「メルマガを何時に送るのが反響を得やすいか」は分かった上で配信しているはずなので、自社のメルマガ施策を効果的に設計する上で参考にできるデータになるでしょう。

集計結果としては9時に配信している場合が多いようです。16時や19時の件名を確認したところ、メルマガというよりは「ポイントの確認」等のあまり重要ではなさそうな内容でした。

ヤマダデンキさんを参考にすると、朝方に送るのが効果的なようです。

まとめ

  • 特定条件でメールデータを抽出するのはGmailApp.search(<'条件’>)メソッドを使う。
  • Gメールアカウント内でのフィルタ条件をそのまま記述できる。
  • スプレッドシートに書き出すことで、競合メルマガの戦略や傾向を分析できる。。

データを貯めてユーザーの反応を見て施策を改善してくのもマーケティングの醍醐味の一つですが、競合の施策を参考にすることでより早く効果的に設計を行うことができます。

ぜひ参考にしてみてください!

せっかくテキストデータを貯められたので、形態素解析を行っていました。下記の記事も御覧ください!

この記事を書いた人

てつお
広告代理店出身、事業会社でWebマーケティングや開発の仕事をしている26歳です。プロフィール詳細はこちら
■Google広告認定資格|Google アナリティクス個人認定資格(GAIQ)|TOEIC920点