【GAS】名刺管理アプリの出力データを活用してメルマガ配信リストを自動更新する


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Google Apps Scriptを使ってメルマガ配信システムを作成しています。

前回は、名刺管理サービスCAMCARDの紹介と、そこから出力したデータをスプレッドシートに取り込む方法についてお伝えしました。

名刺管理アプリCAMCARDの連絡先リストをスプレッドシートに取り込む
名刺管理アプリのデータを上手に使うとメルマガ宛先リストが簡単に作成・更新できます。今回は名刺管理アプリのCAMCARDの紹介と連絡先リストをエクセル形式で出力しスプレッドシートへ取り込む方法を伝えします。

今回はスプレッドシートにインポートしたCAMCARDのデータを使ってメルマガ配信リストを自動更新するGoogle Apps Scriptを紹介いていきます。

これによって

  1. 名刺管理サービスからデータをエクスポートして
  2. スプレッドシートにインポートして
  3. スクリプト実行

これで最新のリストになります。

では行ってみましょう!

スポンサーリンク

現状確認と今回のお題

まずメルマガを配信するメールアドレスのリストはスプレッドシート上にこのように作成しています。

メルマガ配信リストのスプレッドシート

このシートは「配信先リスト」というシート名です。

以前に紹介していますが、ここにメールアドレスが記載されていれば、メールマガジンの配信を自動で行うことができます。

たったの28行!Google Apps Scriptで超簡易メルマガ配信システム
Google Apps Scriptで超簡易メルマガ配信システムを作成しています。今回はいよいよスプレッドシートのアドレス宛にドキュメントの本文をGmailで送信する処理を追加していきます。

さて、新たに名刺交換をした方のメールアドレスをこの配信先リストに追加していきたいのですが、手打ちだと面倒ですし、間違えることもありますよね。

また一度、配信先リストに追加したのを忘れてしまい、重複して同じメールアドレスを追加してしまう、などといったこともあり得ます。

それで、名刺管理サービスCAMCARDのデータとGoogle Apps Scriptを活用してしまおうという魂胆です。

以下がCAMCARDのデータをインポートしたシートで、シート名は「Contacts」となっています。

スプレッドシートにインポートされたContacts

今回は、Contactsにあるメールアドレスのうち、まだ追加していないメールアドレスがあれば配信先リストに追加していくというスクリプトを作成していきます。

CAMCARDデータをもとにメール配信リストを更新するスクリプト

スクリプトはこちらになります。

function inportContacts(){

  var mySS=SpreadsheetApp.getActiveSpreadsheet(); //スプレッドシートを取得

  // 配信先リストシートとその最終行の取得
  var sheetAddress=mySS.getSheetByName("配信先リスト"); //配信先リストシートを取得
  var rowAddress=sheetAddress.getDataRange().getLastRow(); //配信先リストシートの最終行

  // Contactsシートとその最終行の取得 
  var sheetContacts=mySS.getSheetByName("Contacts"); //Contactsシートを取得
  var rowContacts=sheetContacts.getDataRange().getLastRow(); //Contactsシートの最終行

  /* Contactsのリストについて配信先リストに同じものがあるかを検索する */
  for(ci=2;ci<=rowContacts;ci++){
     
    var flugFind = false; //配信リストに該当のメールアドレスがある:true/ない:false

    for(ai=2;ai<=rowAddress;ai++){

      /* 既に配信先リストに同じデータがあればフラグを立てる */
      if(sheetAddress.getRange(ai,4).getValue() === sheetContacts.getRange(ci,9).getValue()){
        flugFind = true;
      }
    }

    /* flugFindがfalseのままなら配信リストに追加をする */
    if(!flugFind){

      sheetAddress.getRange(rowAddress+1,1).setValue(sheetContacts.getRange(ci,6).getValue()); //社名
      sheetAddress.getRange(rowAddress+1,2).setValue(sheetContacts.getRange(ci,2).getValue()); //苗字
      sheetAddress.getRange(rowAddress+1,3).setValue(sheetContacts.getRange(ci,3).getValue()); //名前
      sheetAddress.getRange(rowAddress+1,4).setValue(sheetContacts.getRange(ci,9).getValue()); //To

      rowAddress++;
    }
  }   
}

ちょっと長いですが、流れとしては

  1. 配信リストおよびContactsシートとその最終行の取得
  2. Contactsの全てのメールアドレスについて繰り返し
    1. 配信リスト全体について繰り返し
      • Contactsのメールアドレスが既に配信リストに存在していればフラグを立てる
    2. フラグが立っていなければ
      • 配信リストに社名、苗字、名前、メールアドレスを追加

という流れになります。

以下詳細について解説をしていきますね。

getSheetByNameでシートを取得する

シートが一つの場合はgetActiveSheetなどで十分な場合が多いのですが、今回は二つのシートを取り扱うのでそれぞれを取得して変数に入れておく必要が出てきます。

その場合、getSheetByNameを使ってシート名を指定して取得する方法が一般的です。

Spreadsheetオブジェクト.getSheetByName(シート名)

とします。

今回は、変数sheetAddressに「配信先リスト」を、変数sheetContactsに「Contacts」をそれぞれ取得しています。

フラグを利用して条件分岐

Contactsのリスト内にあるメールアドレスそれぞれについて配信リストに"ない"ということを確認したら、配信リストに追加をします。

そのためにはどうしたらよいでしょうか。

まずフラグ用の変数flugFindを用意してfalseに設定をしていきます。

配信リストを一つずつなめている場合に同じメールアドレスがあった場合はflugFindをtrueにします。

最後まで同じメールアドレスがなかった場合はfalseのままですので、falseであったならば配信リストに該当のメールアドレスとその宛先情報を追加するという仕組みです。

true/falseはそれぞれ真/偽の値を表していますので、そのものをif文の条件として

if(!flugFind){
     ~処理~     
}

とすることができます。

この場合エクスクラメーションマーク「!」は否定を意味していますので、「flugFindがtrueではないならば」という条件式になります。

実行結果

上記スクリプトを実行すると

メルマガ配信リストの更新実行結果
ほとんどモザイクで恐縮ですが、配信リストにないメールアドレスの宛先について情報を追加してくれます。

まとめ

Google Apps ScriptでCAMCARDのデータからメルマガ配信リストの更新をする方法についてお伝えしました。

今回はメルマガ用のリストでしたが、これは顧客のアタックリストだったり、年賀状の宛先リストだったり、非常に汎用性が高いものだと思います。

適宜、Google Apps ScriptとエクセルVBAとを使い分けて、リストの作成作業を楽ちんにこなして頂ければと思います。

さて、本スクリプトに話を戻します。

実はこのスクリプト、実行するとわかるのですが、すごく動作が遅いんです。

Google Apps Scriptのちょっと弱いところなのですが、プログラムの書き方で大きく変わってきます。

次回はその点の解説と解決をする方法についてお伝えできればと思います。

Google Apps Scriptのスプレッドシート読み書きを格段に高速化をする方法
Google Apps Scriptでスプレッドシートの操作をしていて実行速度が遅い!と感じたことがあると思います。今回はスプレッドシートを操作する場合に処理速度を格段に速くする方法をお伝えします。

どうぞお楽しみに!

連載目次:Google Apps Scriptでメルマガシステムを作っちゃおう!

Google Apps ScriptでGmail、スプレッドシート、ドキュメントを連携させて操作することでメルマガシステムが簡単に実現できます。思ったより2割くらい簡単にできますよ。ちなみに無料です…さすがGoogle。
  1. 初心者でも簡単!Google Apps ScriptでGmailを操作してメールを送る方法
  2. 初心者でも簡単!Google Apps Scriptでドキュメントを取得して表示する方法
  3. Google Apps Scriptでスプレッドシートのリストをもとに宛名を差し込んだメール本文を作る
  4. たったの28行!Google Apps Scriptで超簡易メルマガ配信システム
  5. Google Apps Scriptのメルマガ配信リスト自動更新スクリプトを高速化する

タイトルとURLをコピーしました