LoginSignup
1
0

kintoneのwebhookで削除時もレコードの内容を取得したい

Posted at

はじめに

kintoneはアプリの設定で、以下のイベント時にwebhookのURLを叩いてもらうことが可能

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

しかし、レコードの編集や削除の際は、変更前・削除前のレコード情報を返してくれないので非常に困る...

代替案

同じ内容で困っている人の記事を見つけた。

上記を参考に、更新時のwebhookであればレコード情報を返すことを利用できないかと考えた。

解決方法

フィールド内に「delete_flag」というフィールドIDでチェックボックスがある想定。

updateのwebhookを削除だけで使えるのであれば不要だけど、そうもいかない状況だったのでフラグで解決することにした。

触られたくないものなのでグループで囲み、初期表示は折りたたんだ状態にしておくスタイル。
(ユーザーの眼に見える箇所へ置くことになるけど、仕方がない...)

image.png

そしてjavascriptでカスタマイズ

削除時のイベントの発生時、削除よりも前に更新イベントを発生させて、成功したら後続の処理へ進ませることに成功した。

(() => {
  'use strict';

  kintone.events.on(['app.record.index.delete.submit', 'app.record.detail.delete.submit'], function(event){
    return kintone.api(kintone.api.url('/k/v1/record.json', true), 'PUT', {
      "app": kintone.app.getId(),
      "id": event.recordId,
      "record": {
          "delete_flag": { "value": ["ok"] } 
      }
    }).then((resp) => {
      return event;
    }).catch((err) => {
      console.error(err);
    });
  });

})();

あとはwebhook側で削除フラグが立っているかを判断して、更新か削除かを切り分ければ良い。

...というゴリ押し方法(´・ω・`)

おわりに

今回は削除だけ対応すればよかったが、更新時の変更前後を一緒に取る方法はまた別途考えてみたい。

変更前の情報をどこかに持っておくようにフィールドを作成しておけば、「前後で何も変わってない=削除のイベント」みたいな判断もできそうな気がする。

1
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
1
0