kintone の Webhook の限界を越えろ!

公開日:2021-02-03

こんにちは!金春です。

もう gusuku Customine Job Runner は試していただけましたか?

今日の話は kintone の Webhook についてです。というのも、Job Runner を発表してから Webhook というものが意外と知られていないということがわかりました。

Webhook って?

Webhook というのは、kintone 特有のものではなく最近の SaaS では搭載されていることが多い機能です。これが何をするかというと、ざっと次のようなことです

  • そのサービス上でなにかが発生したときに
  • 外部のサービスの指定されたURLに通知する

という仕組みです。Webhook を利用することで、そのサービス単体ではできないようなことを実現できるようになります。有名なところでは Zapier や IFTTT を使うとこの Webhook を受け取って様々な別のサービスと連携させることができるようになったりします。

Webhookのイメージ

kintone の Webhook では何ができる?

kintone では以下の操作が行われたときに Webhook を発行することができます。

  • レコードの追加
  • レコードの編集
  • レコードの削除
  • コメントの書き込み
  • プロセス管理のステータスの更新

これにより、次のようなことができます。(すべてJob Runnerで実現可能です)

  • レコードが追加されたら、チャットツールに通知を出す
  • フォームブリッジのような外部サービスからレコードが追加されたときに処理を行う
  • プロセス管理で承認されたら、プリントクリエイターで帳票を生成して添付ファイルフィールドに添付する

Webhook を使うときの重要なポイントは、あくまでも外部の仕組みを通しての処理となるため、失敗したとしても致命傷にならない処理に限定するというところです。

重要な処理を行いたい場合は失敗した場合を考慮して、kintone の画面での操作で同じ処理を行えるようにしておくなどの代替手段を用意しておくのがベターです。

gusuku Customine Job Runner の Webhook 処理機能

gusuku Customine Job Runner には、この kintone Webhook を受け取って処理する機能があるため、上で例にあげたような処理ができるようになっています。

1月28日の発表会でたくさんデモをご覧いただきましたが、見逃したという方は、2月12日(金)に再演しますので、ぜひご覧ください。

この記事の執筆時点では kintone から送信された Webhook の処理のみに対応しており、他のサービスからの Webhook の処理には対応していませんが、対応してほしいサービスがらあればぜひチャットサポートにお知らせください。

執筆時点の Job Runner での Webhook の処理イメージはこんな感じです。

gusuku Customine Job Runner での Webhook

kintone の Webhook の制限

この便利な Webhook ですが、kintone の Webhook には4つの制限があります。

  1. ドメイン単位で1分間に60回までしか送信されない。60回を超えた分は送信されない
  2. 組織間のアクセス制限の設定をオンにすると Webhook が使えなくなる
  3. Excel/CSVで読み込んだときは Webhook が送信されない
  4. 複数のレコードを一括操作する REST API を用いたレコード操作では Webhook が送信されない

この4つのパターンにハマるときの完全ではないですが簡易的な回避方法が gusuku Customine には用意されているのでご紹介します。

1と2の回避方法

まず、1と2の回避方法です。このケースに当てはまる場合、kintone の標準機能の Webhook は使えませんが、gusuku Customine には、「kintone Webhook を起動する」という「やること」が存在します。

これを、「レコードを保存した直後」などのタイミングで使ってあげることで、Job Runner に作成した Webhook の処理を起動することができます。

なお、これは kintone 標準の Webhook ではありませんので、任意のサービス(Zapierなど)に向けて Webhook を送信することはできませんのでご注意ください。さらに、あくまでも kintone の画面から Job Runner のジョブを起動する形ですので、フォームブリッジ等の外部サービス等の連携時にも発動しません。

ゲストスペースで登録されたレコードを通常スペース内のアプリにコピーするというような用途で使えます。

また、2の代替手段としてこの方法を用いる場合、処理する内容によっては組織間のアクセス制限を超えて情報が露呈する危険性がありますので慎重にお使いください。

3と4の回避方法

このケースでは、各々「Excel/CSVを読み込んだこと」、「複数レコードを操作したこと」を外部のプログラムから察知することができません。ですので残念ながら完全に自動で処理することができません。

しかし、gusuku Customineには「定期実行タスクを直ちに起動する」という「やること」があります。

これを使うと、一覧画面にボタンをつけておいて、それを押すことで Job Runner で作った処理を起動することができます。これを使えば、例えば「CSV でデータを読み込んで、ボタンを押して一括で更新」のような処理を作ることができます。

Job Runner が入る前の gusuku Customine でも少し複雑な作りをすれば同じようなことはできましたが、

  • 設定がそこそこ複雑になる
  • 処理が終わるまでブラウザを閉じることができない

という問題がありました。この方法の場合は、ボタンを押した後はブラウザを閉じても大丈夫です。裏側で Job Runnerがせっせと更新してくれます。

まとめ

Webhook いかがでしたか?なかなかイメージしづらい機能だとは思いますが、活用することで手間なくデータ更新することができますのでぜひトライしてみてください。

また、制限の回避方法でご紹介した通り、gusuku Customineでは、画面のカスタマイズと Job Runner のサーバーでの処理を連携させることができます。この機能を活用すると様々な応用が可能になりますので、ぜひみなさんの活用方法を教えてください!

投稿者プロフィール

アバター画像
金春 利幸
"gusukuシリーズプロダクトマネージャー
ノーコード(No-Code)の有効性に着目し、kintoneとgusukuシリーズの普及のため全国を飛び回っています。"