公開日:2025-04-09
こんにちは!キャンプも好きだけど最近登山にもはまっている、gusukuのサポートの中の人 にら です。
3月末にお花見キャンプに行ってきました🌸
この時期のキャンプは、いつ桜が咲くかわかっていない数カ月前に予約するため開花状況は運次第なのですが、昨年に続き今年も………
咲いていませんでした!!!

ちなみに、満開の夜に桜の近くで焚火をすると火のゆらぎで花が淡く照らされて幻想的で最高なので、満開の時にお花見キャンプを予約できた方はぜひ焚火をお楽しみください。
気を取り直してキャンプ場運営
では気を取り直して、前回に引き続き予約管理アプリのカスタマイズを作っていきます。
前回は入力チェックと予約明細へのレコード追加でしたが、今回はお客様へ受入OKまたは受入NGのメールを送信する機能を作成したいと思います。
なお、架空のキャンプ場ですのでこの世には存在しません。本当にキャンプ場を運営しているわけではなく、キャンプ場についての設定はすべてフィクションです!
🏕️予約結果をお客様にメールする
メールの送信は、SendGrid というサービスを使って送ります。ご利用になる場合はSendGridのご契約が別途必要です。
予約管理で送るメールは下記の2種類です。
- 受入OKの時のメール

- 受入NGの時のメール

メールを送るカスタマイズの作り方
SendGridでメールを送る やること はカスタマインのJob Runnerにしかないため、メールを送るカスタマイズはJob Runnerで作成します。
通常、kintoneアプリのWebhookのカスタマイズは、下記の図のAのパターンのkintoneのWebhookの通知をJob Runnerで受け取って実行することが多いですが、今回はkintoneのレコードを操作した時ではなく予約担当者が画面でボタンを押した時にメール送信したいので、kintoneのWebhookの機能は使わずにカスタマインの「kintone Webhook を起動する」を使用して、下記の例のBのパターンで実行します。

ということで、下記の2つのカスタマイズを作成します。
- Job Runner の kintone アプリの Webhook のカスタマイズで SendGrid でメールを送るカスタマイズ
- kintone アプリのカスタマイズで、ボタンを押すとkintone アプリの Webhook のカスタマイズを呼び出すカスタマイズ
また、SendGridでメールを送る やることには「SendGrid でメールを送信する」と「SendGrid で添付ファイルつきメールを送信する」がありますが、今回はQRコードを添付して送りたいので後者を使用します。
SendGridで送るメールの本文をテキストテンプレートで指定する
やること「SendGrid でメールを送信する」と「SendGrid で添付ファイルつきメールを送信する」は、パラメーター「メール本文」に送信するメールの本文を指定します。
その際に、${フィールドコード} や ${@[0].フィールドコード} などのように指定することで、kintoneのレコード内のフィールドの値を本文に埋め込むことが可能です。
ただ、この方法で本文を作成すると、メール本文を変更したくなった時にカスタマイズを変更する必要があり、予約担当者が簡単にメール本文を修正することができません。
この問題を解決するため、メール本文のテンプレートをkintoneアプリ管理し、そのテンプレートをもとに本文を生成することで、カスタマイズを変更しなくてもメール本文を修正できるようにします。
この辺りは、サポートサイトの記事で詳しく説明していますのでこちらをご覧ください。
SendGridで送るメール本文のテンプレートをkintoneアプリで管理する方法
今回使ったテキストテンプレートは下記です。

また、テキストテンプレートでは$FORでテーブルの値を繰り返し表示することができるのですが、関連レコード一覧はそのままでは繰り返し表示ができません。
今回は、Job Runnerのカスタマイズで行うのではなく、kintoneアプリのカスタマイズ(画面のカスタマイズ)であらかじめ作成しておく方法にしました。
kintoneプロセス管理のアクション「メール送信に進む」を実行した際に、関連レコード一覧の内容を「テンプレートをもとにテキストを生成する」で文字列に変換し、「メール用_予約明細」フィールドにセットしておいて、
そのフィールドの値をSendGridでのメール送信の際に埋め込みました。
このとき使用するテキストテンプレートは下記です。
こちらは$FORを使用して、複数のレコードの値をレコードの数だけ繰り返して出力する記載方法です。

こちらのテキストテンプレートを使用し、関連レコード一覧の値を下記のような文字列に変換します。

カスタマイズは下記の通りです。
まず、テキストテンプレートが保存されたレコードを取得し、
テキストの元データとなる関連レコード一覧に表示されたレコードを取得します。
やること「テンプレートをもとにテキストを生成する」で「データレコード」に関連レコードに表示されたデータ、
「テンプレートレコード」にテンプレートが保存されたレコード、「テンプレートフィールド」にテンプレートを記載した文字列(複数行)フィールドを指定します。
そうしますと、テキストテンプレートの文字列に、「データレコード」で指定したレコードの値が埋め込まれた文字列が生成されますので、アクションの結果を「メール用_予約明細」フィールドにセットすれば準備完了です。

SendGridでメールを送る 受入OKのとき
アクション2の やること「Webhook から渡されたレコードを取得する」は、画面のカスタマイズから渡されたメール出力対象にしたいレコードが入っているので、そのレコードの値を使ってメールを送信します。
アクション3で前述のテキストテンプレートを保存したレコードを取得し、アクション5でそのテンプレートを使用してアクション2で取得したレコードの値を使ってメール本文を生成しています。そして、そのアクションの結果をアクション12で「メール本文」に指定することで、カスタマイズには本文を書かずに、別のkintoneアプリで管理しているテンプレートの文章を使ったメールを送っています。
アクション7、8では、メール送信が完了したことをkintoneアプリに反映するため、メールの送信が終わったら「メール送信」フィールドに「完了」をセットし、ステータスを「来場待ち」に変更します。

上記のkintoneアプリのWebhookのカスタマイズを呼び出す、kintoneアプリのカスタマイズ(画面のカスタマイズ)は下記です。詳細画面にボタンを表示し、ボタンが押されたらまずQRコードを作成してからkintoneアプリのWebhookを呼び出します。

アクション63と89は、やること「kintone Webhook を起動する」の実行後に少し待ってからOKを押すことを促すメッセージを表示し、OKが押されたら画面をリロードします。
基本的に、画面のカスタマイズからJob Runnerのカスタマイズの終了を待って何かする…といったことはできないため、ダイアログを表示して少し待ってもらってからリロードするようにしています。

SendGridでメールを送る 受入NGのとき
OKのときとほとんど同じです!
OKのときとNGの時のカスタマイズは、1つのカスタマイズにまとめてステータスで分岐するカスタマイズにすることもできますが、今回はわかりやすさとカスタマイズのシンプルさを優先して別のカスタマイズにしました。

こちらは、アクション76から84で、登録済みの予約明細に削除フラグを立ててからメール送信に進みます。

これでメール送信の機能が完成しました!!
次回の妄想キャンプ場は?
次回は、チェックインの際にお客様にメールでお送りしたQRコードを提示いただいて、スムーズにお手続きいただくためのカスタマイズを作成します。
次回も楽しみにしていただけると嬉しいです!
投稿者プロフィール

-
gusukuのチャットサポートの中の人です。
kintone認定資格は5冠。
趣味はキャンプ、最近登山もはじめました。