Job Runnerの機能の一つであるkintoneアプリのWebhookでは、kintoneからgusukuサーバーにWebhook通知の送信が行われた際、Job Runnerでの処理を行う事ができます。
※Webhookについては Webhookを設定する | kintone ヘルプ (cybozu.help) も併せてご覧ください。
今回は、レコード保存時にフィールド値を別フィールドに保存する方法をご紹介します。(なお、この内容はkintoneアプリのカスタマイズでも実現可能ですが、今回はWebhookで実現しています。)
kintoneアプリの設定
kintoneアプリには以下のフィールドを設定しました。
最終的にできるカスタマイズ
最終的には、Job Runnerで登録、更新時に「初回記載メモ内容」フィールドに値が入っていなければ、「メモ」フィールドから「初回記載メモ内容」フィールドにフィールドの値をコピーします。
設定するカスタマイズの全体像
今回はカスタマイズの内容がシンプルなので、先にカスタマイズの全体像をお見せします。
このカスタマイズのそれぞれのアクションについて、処理の目的を踏まえながら見ていきましょう。
kintone 接続設定を行う の部分
まず、「kintone 接続設定を行う」のアクションについてです。
1番アクションでは「やること」に「kintone 接続設定を行う」、「条件」に「Webhook を開始した時」を用い、接続設定を行っています。
アプリでレコード操作をした時のWebhookから渡されたレコードの内容を取得するだけであれば、後述する「Webhook から渡されたレコードを取得する」のみで良いのですが、今回はレコードの内容を取得後、更新処理が必要となりますので、kintone 接続設定を行っています。
APIトークンはkintone アプリの設定画面から生成します。
APIトークンのアクセス権は
・レコード閲覧
・レコード編集
の2つの権限にチェックを入れておいて下さい。
アクセス権の設定が終わったらAPIトークン画面で設定した内容を「保存」し、kintoneアプリも更新しておき、確実にAPIトークンを有効にした上で、カスタマインのパラメータにも忘れずにAPIトークンの値を設定しておきましょう。
レコードを取ってくる部分
レコードを取ってくる部分は次のようになります。
2番アクションでは「やること」に「Webhook から渡されたレコードを取得する」、「条件」に「他のアクションの実行が完了した時」を設定し、レコードの内容を取得しましょう。
フィールドに値をセットする部分
フィールドに値をセットする部分は次のようになります。
3番アクションでは「やること」に「フィールドに値をセットする」、「条件」に「レコード1行が準備できた時」「フィールド値が空ならば」を設定し、「初回記載メモ内容」フィールドの値が空であれば、「メモ」フィールドの値を「初回記載メモ内容」フィールドの値にセットします。
注意点として、慣れないうちは条件の「レコード1行が準備できた時」と設定すべきところを、「他のアクションの実行が完了した時」と設定してしまいがちです。
ですが、Job Runnerでレコードを操作する場合は条件「レコード1行が準備できた時」もしくは条件「レコード全行が準備できた時」のどちらかを絶対に使う必要があります。
1行ずつ更新する場合は「レコード1行が準備できた時」、全行を集計したり書き出す場合は「レコード全行が準備できた時」を必ず使う事になります。この点、気を付けて下さい。
また「フィールドに値をセットする」を行い、処理が終了すると、レコードは自動で保存されます。
実際に動かしてみると
実際にレコードを保存してみた場合、次のような動きになります。
まずレコードの追加を行い、レコードを保存します。
レコード保存の後、レコード詳細画面に画面遷移した直後の画面表示は次のようになります。
ここでは、メモ欄に値が反映され、操作しているユーザー(画面では「大深 三郎」さん)がレコードを登録した事がわかります。(初回登録のタイミングなので、作成日時と更新日時も同じになっています。)
「初回記載メモ内容」フィールドにはまだ値は転記されていません。
その後、数秒待った後に画面をリロードすると、次の様な画面となります。
Webhookで更新されたことで更新者が「Administrator」ユーザとなり、「初回記載メモ内容」フィールドにも「メモ」フィールドの内容が転記されています。
Job RunnerのWebhookを用いたカスタマイズでは、カスタマイズの設定次第でいろいろな更新後処理が実現できます。上記の例を参考にぜひお試しください!