見出し画像

kintone×トヨクモサービス×クラウドBOT!あれやこれやで通知メール送信を自動化チャレンジ

こんにちは、yamaです。
今回は、ベストか分からないけど色々試してみたよ!という私の紆余曲折チャレンジをご紹介する記事です。


まず最初に

何をやりたいのか(目的)

トヨクモさんのフォームブリッジとkViewerを使って、Toyokumo kintone App認証を使った認証付きのwebページ(ビュー/フォーム)を作りました。Toyokumo kintone App認証を使ったページには、認証ユーザーとしてリスト登録しているメールアドレス(あるいはGoogleアカウントなど)のみがアクセス可能です。ということは、新しく対象者が増えたら、初回は「あなたは認証登録されたので今からこのページにログイン可能ですよ」と対象者にURLと共にお知らせする必要があります。
このお知らせメールをいかに手間なく漏れなく送るか、というのが今回のチャレンジです。

落としどころ

色々試した結果、こんなフローに落ち着きました。

認証権限自動同期~案内メール自動送信フロー(概略図)

データコレクトの時間指定更新・フォームブリッジ&kViewerの時間指定更新の間はクラウドBOTの定期実行の間はそれぞれ1時間ずつ空いています。毎日1回ずつこのフローが実行されます。

回りくどく見えますよね?

でも、色々やってみて一旦これに落ち着いたのです…
その色々を紹介していきます!

前提

「データコレクト時間指定更新」については、他のアプリのレコードを集計して、条件によってApp認証の対象ユーザーかどうか(有効/無効)を毎日更新しています。また、このApp認証関連以外の別のフィールドにも式を入れており、他の業務で使用しています。そのため、「データコレクト時間指定更新」以外のフローを色々変えられないか試しています。

やってみたこと①フォームブリッジの登録と同時にApp認証のユーザー同期をできないか?

Toyokumo kintone App認証は、認証ユーザーの登録にkintoneアプリとの同期を使うことができますが、この同期方法は「時間指定同期(1日1回指定の時間)の他に、webhookによるリアルタイム同期が選択できます。
登録と同時に同期することができれば、すぐに「登録完了しました!ログインどうぞー!」と案内が出来そうですよね!使いたい!

webhook同期の操作は画面に従えば全然難しくありません。

意気揚々と設定してみると…なんと!!制限値の壁にぶつかります…。

イシイケンタロウさんの記事でも紹介されている通り、kintoneには1アプリに設定できるwebhook数の上限が10個と決まっており、認証をかけたいビュー・フォーム数が多すぎたため、この制限に引っ掛かってしまいました。

残念…ということで、対象ユーザーは1日に1回時間指定同期して最新状態にすることが決まりです。

時間指定同期は1時間単位で選択できます。

やってみたこと②フォームブリッジの遅延送信機能を使えないか?

1日1回の時間指定更新で認証ユーザーが同期されるということは、「同期が終わった後」にメールを送らなくてはいけない…毎日増えたり減ったりするユーザー…誰が新しい送信対象かなんていちいち張り付いていられないけどどうすれば…?
その時、気づきました。フォームブリッジの自動返信メールには「遅延送信」という機能がついているのです。

差出人アドレスをautoreply@kintoneapp.comにしていると、この機能が表示されました。操作ガイドにも以下のように、ToyokumokintoneApp認証を使っているときに利用する機能だと書かれています!これは使えるのでは!?

遅延送信(お試し/プロフェッショナルコース限定)とは、ユーザーがフォームへの回答後、どのタイミングで自動返信メールの送信を行うかの設定です。
デフォルトでは「無効(すぐに送信)」になっています。
「無効(すぐに送信)」以外を利用する例としては、自動返信メールでToyokumo kintoneApp認証の設定を行っているビュー/フォームのURLを送る運用にしている場合などがあります。
この場合、自動返信メールで案内するビュー/フォーム側のToyokumo kintoneApp認証の自動同期が間に合わずに、ユーザーがビュー/フォームを閲覧できない可能性があります。 
そのため、「無効(すぐに送信)」以外でご利用いただくことを推奨します。

kintone連携サービス 操作ガイド

ところが、遅延時間を選ぼうとすると…

60分後までだったぁぁぁぁぁ!!!

フォーム入力してから60分後では、まだ時間指定更新が実行されていないのでユーザーはビューにアクセスできません…。
やってみたこと①の時点でビュー数が少なくて、webhook同期ができていれば、この遅延送信と組み合わせてスムーズに案内が出来そうですので、いい機能ではありますよね!
24時間後があるとすごく助かったんですが…。この件はサポートセンターにも共有させていただいたので、もし同様の要望が多ければ、実装されてくれたら嬉しいなあと思っています。
でも利用する社数が多いとサーバーの負荷が大変なのかも…。

現状はこの仕様なので、では別の方法を考えましょう。

やってみたこと③kMailerの自動送信機能を使ったらいいのでは?

kMailerにもwebhookで起動する「自動送信」という機能があります。フォームブリッジでの返信メールで送らなくても、Toyokumo kintone App認証の同期が終わったタイミングでリアルタイムにメール送信ができれば、やりたいことは実現できるのでは!?「送信後レコード編集」機能で送ったかどうかの管理もできるし、そっちの方が良さそうだ!やってみよう!

日付などの条件が揃ったら「送信フラグ」フィールドに「1」が入るようにkintoneアプリ側で計算式を入れ、kMailerの自動送信条件に指定してみました。

私はやってみてエラーが出るまで気づかなかったのですが、勘のいい方はお気づきかと思います。
前提であるデータコレクトの時間指定更新が走っているため、「レコード編集」を起点に実行されるwebhookの実行回数が「1分間に60回」をゆうに超えてしまい、制限値の壁にぶつかりました~笑

やってみたこと④こうなったら人力だ!!

「運用でカバー」しちゃう方法です。条件が合致したら「案内メール送信日」をデータコレクトの時間指定更新で挿入する設定はできていたため、kintoneのリマインダー条件通知を使って「案内メールが未送信」かつ「案内メール送信日が今日」のユーザーがいたら担当者に「送信対象者がおるでー」という通知メールを送信するようにしてみました。

業務を担当する社員にだけ1回通知メールを送ります。

やれなくはないです。実際、これで何か月か運用しました。でも、この通知が来た後に実際に「メールを送る」作業は手作業になるため…

・通知を見逃す可能性
・見逃してなくてもすぐに対応できなくて送信が遅れる可能性
・忘れちゃったら次の日は通知が来ない
・担当者がお休みの日はどうするのか?
・シンプルにめんどくさい

などなどの問題をはらんでいました。

kMailerの送信予約×RPA(クラウドBOT)!

kMailerに「送信予約」という機能があるのを発見しました。作成日時など日時フィールドを起点に事前に送信を予約しておける機能です。

しかし、この機能は、「レコード登録時」とか「何かしらの条件に合致したら」とかで自動的に送信予約されるわけではなく、「送信予約する」ボタンをkintone上でクリックし、予約設定を登録する必要がある機能でした。(私がうまく設定できてないだけで自動で予約できる方法をご存じの方いたら教えてください!)

ここを押して予約する必要がある

送信時間は固定化できるけど、予約作業がいるなら結局リマインダーで手動送信の方がいいか…?とその時!!ひらめきました!!
RPAで予約を自動化すればええやん!?

これで、冒頭の落としどころフローが完成したのです。
色々試したことで、知らなかった機能を試すことが出来たり、より良い業務フローがないか考えることができたので、楽しかったです。
RPAで送信自動化って具体的にはどうやったのか、については、別記事で紹介しようと思います!
公開をお待ちください☆

この記事が気に入ったらサポートをしてみませんか?