Customers Mail CloudのGoogle Apps Scriptライブラリでメール配信状態を取得する

Customers Mail Cloudには大きく分けて3つのAPIが用意されています。

  • メール送信
  • Webhook
  • メール配信状態取得、更新

メール送信APIはSMTPやWeb APIを通じてメール送信を行います。Webhookはメールの受信や配信結果を受け取るための仕組みです。そしてメール配信状態取得APIはバッチ処理である日付のメール配信結果を受け取れます。

Webhookで処理するのも良いですが、バッチ処理でも問題ない場合はメール配信状態取得APIを利用する方が手軽です。サーバを立てる必要もなく、ローカルコンピュータからでも取得できます。

今回、Google Apps Script版ライブラリでメール配信状態取得APIに対応したので、その使い方を解説します。

ライブラリのインストール

Google Apps ScriptライブラリのIDは 1RegQzjZLiJUacopzEoxmpTe5_vp7LP3r01aa-D9rf4sJRPZkifI4Mf7K です。Google Apps Scriptのライブラリより追加してください。基本的に最新版を導入してください。

f:id:moongift:20201125154134p:plain
Google Apps Scriptでライブラリを追加

初期化

ライブラリの初期化は次のようなコードになります。あらかじめCustomers Mail CloudでAPIユーザ、APIキーを取得しておいてください。

var c = new CustomersMailCloud.Client('API_USER', 'API_KEY')

メール配信状態オブジェクトの取得

メール配信状態は次の3つに分かれています。

メールの種類 メソッド
正常終了したメール cliend.delivery()
エラーメール client.bounce()
ブロック client.block()

こちらの詳細についてはドキュメントを参考にしてください。

エラーメールを取得する

今回はエラーメールを取得してみます。日付も指定し、取得数(今回は100件)も取得しています。

c.trial();
var b = c.bounce();
b.start_date = '2020-11-01';
b.end_date = '2020-11-14';
var ary = b.list();

後はこの内容をGoogleシートに書き出してみます。

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('Sheet1');
var lastRow = sheet.getLastRow();
var fields = sheet.getRange('1:1').getValues()[0].filter(a => a != '');
for (var index in ary) {
  var row = parseInt(lastRow) + 1 + parseInt(index);
  var params = ary[index];
  for (var c in fields) {
    var name = fields[c];
    sheet.getRange(row, parseInt(c) + 1).setValue(params[name]);
  }
}

これでエラーメールがGoogleシートの中に一覧で書き出されます。メールのIDも取得できますので、どのメールがエラーになったのかも簡単に確認できるでしょう。

f:id:moongift:20201125154311p:plain
エラーメールをGoogleシートに出力

まとめ

Google Apps Script版を使えばGoogleシートからメールを一括送信したり、他のシステムと組み合わせてメール送信する仕組みが簡単に実現できます。メールを一括送信する際にはぜひCustomers Mail Cloudと組み合わせてみてください。

クラウドからのメール送信を簡単に。確実に。| Customers Mail Cloud