LoginSignup
3
0

More than 1 year has passed since last update.

今までのSendGrid応用編

この回は、2021年のAdventCalendar向けにシリーズとしてお届けしていました。
実に1年経ってしまいましたが、改めて前回までの記事を時系列で紹介します。
【FileMaker】SendGrid経由でメールを送る - 一括送信編
【FileMaker】SendGrid経由でメールを送る - テンプレートを使う

これまでの基本的なSendGridメール送信については、以下の記事もぜひ参考にしてみてください。

【FileMaker】SendGrid経由でメールを送る 下準備編
【FileMaker】SendGrid経由でメールを送る テキストメール編
【FileMaker】SendGrid経由でメールを送る 添付ファイル編
【FileMaker】SendGrid経由でメールを送る - エラーコード10が返ってくる

では、おさらいが済んだところで、今回の記事、進めましょう!

FileMaker バージョン

curlとJSONを使いますので、FileMaker ver.16以上で実装してみてください。
この記事では、FileMaker ver.19.6.1で作成し、実行しました。

気がつきましたが、去年はver.19.4.1で作成していました。
1年で0.2バージョン上がったんですね!
進化の早い FileMaker !

現場の疲弊

さて、営業や現場スタッフの尽力で、おかげさまで購入数やユーザ数も増えてきました。
今まではキャンペーンのお知らせを手で作って夜中に送信していたのですが、流石に働き方改革をしないとスタッフも疲弊してしまいそうです。
そこで、時間指定をしてキャンペーンメールを送れるようにしよう、となりました。

まず、SendGridのキャンペーンメールについて、事前に知識を入れておきましょう。

SendGrid キャンペーンメールの概要

以下のサイトが、SendGridキャンペーンメール送信に関する情報です。

API仕様は公開されていますが、キャンペーンメールを作成する手順などは、SendGridアカウントを作成して確認してください。

手順として、以下のような流れになります。

1.送信者情報を作成する
2.受信者情報を登録する
3.受信者のグループを作成する
4.メール内容を作成する
5.送信日時を設定する <-今回の記事

これら手順でAPIが用意されていますが、今回はすでに4まで作成済みであることとして、「5.送信日時を設定」し、その日時で送信されるかどうかのテストを行います。

ちなみに、1〜5まででどんなAPIを使うか、というと、次のようなAPIになります。

順番 手順 API
1 送信者情報を作成する Sender Identities API
2 受信者情報を登録する Contacts API
3 受信者のグループを作成する Contacts API
4 メール内容を作成する Campaigns API
5 送信日時を設定する Campaigns API

一度、SendGrid内で手動でこれらの手順を確認しておくと、APIを使うときに「あの項目がここにはまるのか」というのがわかりやすくなりますので、ぜひやってみてください。
こちらの公式資料も詳しいです。

SendGridのキャンペーンメールの手順がわかったところで、早速「手順5」をFileMakerからも送ってみましょう。

FileMakerの実装

必要なSendGrid情報

APIキーのほか、以下が必要になります。

・キャンペーンID
・送信日時

キャンペーンIDは、「手順4」でSendGrid内で作成したキャンペーンメールのIDを取得できます。

SendGridサイトでキャンペーンIDを確認する

直接SendGridサイトで確認する場合は、キャンペーンメールをクリックして編集画面に行った際にURLから確認できます。
スクリーンショット 2022-12-22 11.55.42.png

ちなみに、送信済みのキャンペーンメールは、SendGridの「Campaign」カテゴリで確認できます。
スクリーンショット 2021-12-14 12.25.47.png
このCAMPAIGN NAMEをクリックすると、キャンペーンIDやコンプレッションなどをグラフ化したページで色々確認できます。
このグラフは、昨年キャンペーンメールを送信したときの状態です。
テストなのでほぼゼロが続いていますが、通常この時期だとクリスマスや年末年始向けにキャンペーンの送信やメールからのクリック数などが増える時期ではないでしょうか。
スクリーンショット 2021-12-14 12.27.25.png

APIでキャンペーンIDを確認する

通常、FileMakerなどアプリから運用する場合は、キャンペーンIDをレコードとして保存しておくのがベストと思います。

キャンペーンIDを取得するAPIの構文は、以下になります。

GET https://api.sendgrid.com/v3/campaigns?limit={limit}&offset={offset} HTTP/1.1

この構文では全てのキャンペーンIDが返ってきますが、作成日の降順で返ってきますので、最初のキャンペーンIDが最新になります。

また、キャンペーンメールの作成もAPI経由ですると、キャンペーンメール作成APIの返値でキャンペーンIDが確認できます。
今回は触れませんが、SendGrid キャンペーンメール作成APIページで確認してみてください。

キャンペーンスケジュールAPIの確認

キャンペーンをスケジュールするAPIの構文は、以下になります。

POST https://api.sendgrid.com/v3/campaigns/{campaign_id}/schedules HTTP/1.1

指定する送信日時は、UNIXタイムスタンプをJSONで指定します。

{
  "send_at": 1489771528
}

これを、FileMakerでの構文に直して実装します。

スクリプト

全体的なスクリプトは、以下の画像になります。
水色部分が必要最低限の実装です。
スクリーンショット 2022-12-22 11.51.07.png

UNIXタイムスタンプの作成

日本時間を加味したUNIXタイムスタンプを指定するので、協定世界時(UTC)に-9時間の計算を入れます。
他にもUNIXタイムスタンプの作成方法がありますが、今回は単純にUTCから9時間引いています。

GetAsNumber ( Timestamp ( Get(日付) ; Time ( 12 ; 0 ; 0 ) ) - Timestamp ( Date ( 1 ; 1 ; 1970 ) ; Time ( 0 ; 0 ; 0 ) )- 60 * 60 * 9  )

今回は、当日12時にキャンペーンメールを送りたいので、12時を指定しています。
↓この部分です。

Timestamp ( Get(日付) ; Time ( 12 ; 0 ; 0 ) )

URL から挿入 でAPI実行する

URL から挿入 スクリプトステップ一文で処理します。
スクリーンショット 2022-12-22 12.20.33.png
サンプルなのでキャンペーンIDを直で指定していますが、運用ではレコードの保存した値などを指定してください。
あと、この1行だけだとエラーが返ってきた時の処理を省いていますので、キャンペーンIDの運用同様、エラー処理は実装してください。
よくあるエラーとして、以下があります。

エラーコード エラーメッセージ 弊社的よくある対応
10 要求されたデータが見つかりません 返値がない正常終了の可能性があるので、問題ない場合は処理成功とする1
1631 接続に失敗しました API送信先で受け入れられない何かのエラーか、構文が間違えている可能性が高いので要調査。通常、このエラーが出ないようにテストすべし。ただし、API先のシステム障害や仕様変更の可能性もあるので、運用中に出た場合は緊急対応すべしorz

エラーコード以外に、返値がターゲットに返ってきます。
今回は、"$getterJson"という変数に入るようにしています。
処理に成功すると、次のようなJSONが返ってきます。

{"id":16006868,"send_at":1671678000,"status":"Scheduled"}

"status"が"Scheduled"になっているのが確認できます。
無事、キャンペーンメールが指定した日時でスケジュールされたようです!

エラーコードの一覧は、公式ヘルプで確認してください。
https://help.claris.com/ja/pro-help/content/error-codes.html

スケジュールされた送信の確認

そうこうするうちに、12時になりました。
メールボックスを見てみましょう。
スクリーンショット 2022-12-22 12.11.18.png
送られてきていました!

SendGridのキャンペーンメール一覧からも、送信済みが確認できます。
スクリーンショット 2022-12-22 12.36.30.png

Happy Holidays!

これで無事、スタッフも休日をゆっくり過ごせそうですね。
働き方改革の一つにもなっていたら嬉しいですね。

  1. URL から挿入 のヘルプも確認してください。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0