はじめに
kintone ではフィールドに「値の重複を禁止する」を設定することで重複したレコードの登録を禁止することができます。しかし、「レコードの登録は許可するが、そのレコードが重複であることをわかるようにしたい」というケースもあるかと思います。
こちらの記事では Job Runner の機能を使用して、CSV で取り込んだデータが既に kintone に存在していたデータと重複しているかを確認し、重複している場合には CSV で取り込んだ方のデータに重複であることを示すフラグを立てるカスタマイズをご紹介します。
Job Runner を初めてお使いになる方は、はじめての gusuku Customine Job Runner : 年齢計算のカスタマイズも参考にしてください。
また、CSV で一括で取り込む場合ではなくレコード追加画面でレコードを保存する際に重複チェックをしたい場合は、複合キーで重複チェックをレコード保存時に実行 を参考にしてください。
想定する要件
既に1,000件の従業員情報が登録されているアプリ「従業員名簿」に、CSV で 100件分の従業員情報を取り込むことを想定します。
この時、取り込んだ 100件の中で既に登録済みの 1,000件とを比較して、「従業員番号」が重複する場合には「重複有無」というフィールド(チェックボックス)に値を入れるようにします。
アプリ構成と事前準備
使用する「従業員名簿」アプリは以下のフィールドが存在している前提となります。
続いて、「従業員名簿」アプリにて以下の権限で API トークンを作成しておきます。
また、Job Runner を初めてお使いになる際にはJob Runnerを利用するとき、初めにすることを参照の上、アプリスロットの割り当てを行ってください。
では、カスタマイズ作成に入ります。
定期実行タスクの作成手順
カスタマイズ一覧画面からは「新規のカスタマイズ作成」→「定期実行タスク」、カスタマイズ画面からは左上のメニューから「新しいカスタマイズ」→「定期実行タスク」で定期実行タスクの作成を開始します。
作成するプロジェクトを選択し初期画面が表示されると、アクション1番と2番に初めからやることと条件が設定されています。
これらの設定は、定期実行タスクでの定番となる設定が自動的にセットされた状態になります。これを順に説明していきたいと思います。
接続設定
はじめに kintone 接続設定を行う と 実行予定時刻になった時 という条件がセットされています。これは定期実行タスクでの定番のパターンです。レコードを取得したり更新したりと、kintoneアプリに接続するためには必ずAPIトークンの設定が必要です。
ここで設定するAPIトークンは、kintoneアプリ側で予め設定が必要です。今回は、「アプリ構成と事前準備」で「従業員名簿」アプリのAPIトークンを作成していますので、これを使用して kintone への接続設定を作成します。
CSV で追加したレコードの取得
続いて、「従業員名簿」アプリから CSV で追加した分のレコードを取得する設定です。厳密には「CSV で追加したレコード」のみを特定する方法はありませんが、今回は CSV で取り込んだ直後に実行することを想定して、「5分以内に追加されたレコード」を対象とする設定とします。
まず、やること「時刻を計算する」にて現在の時刻の5分前を指定します。
続いて、「全レコードを取得する」にて「従業員名簿」のレコードを取得した後、「取得したレコードを絞り込む」でアクション番号2にて指定した時刻以降に作成されたレコードに絞り込みます。
※この記事ではクエリ記法に不慣れな方向けに「全レコードを取得する」と「取得したレコードを絞り込む」の組み合わせにて実現する例を紹介していますが、クエリ記法に慣れている方は3,4 のアクションの代わりに「クエリで条件を指定してレコードを取得する」でも同じことが実現できます。
レコードの比較
アクション番号 3,4 で取得したレコードを元にして、kintone アプリ内で同じキー(従業員番号)を持つレコードを取得します。取得した結果「2件以上」存在する場合には重複とみなすことができます。
まずは、「キーを指定してレコードを取得する」を使用して、アクション番号 3,4 で取得したレコードを元にして、「従業員名簿」アプリからレコードを取得します。条件は「レコード1行が準備できた時」を使用します。
続いて、「レコード行数をカウントする」を使用してアクション番号 5 で取得したレコードの件数をカウントします。条件は「レコード全行が準備できた時」を使用する点に注意してください。
重複したレコードの更新
アクション番号 5,6 により、「同じ従業員番号を持つレコードの件数」を算出できるため、この件数が 2件以上のレコードのみ「重複有無」フィールドに「重複あり」とセットする設定を行います。
ここまでの設定により、以下のカスタマイズが出来上がりました。
カスタマイズの実行
作成したカスタマイズを実行するには、画面上部の黄色い「ジョブ生成・設定」ボタンをクリックしてください。ジョブが生成され、ダイアログが開きます。詳しい使い方についてはこちらのページをご確認ください。
ここで左下の「直ちに実行」をクリックすると、作成したカスタマイズが実行されます。「実行履歴」のタブで実行結果を確認してみてください(履歴が出てこないようであれば、ダイアログ左上のリロードボタンをクリックしてみてください)。
また、kintoneアプリ側で、思ったようなカスタマイズが実行されているかをご確認ください。
定期実行タスクをキックするボタンを作成
作成したジョブは定期実行タスクとして指定した日時に動かすことができますが、kintone アプリのカスタマイズと組み合わせることで以下のように kintone の画面上に配置したボタンから実行することが可能です。
「従業員名簿アプリ」で新規に「kintone アプリのカスタマイズ」を作成します。
ボタンの配置はやること「ボタンをメニュー位置に配置する」を使用します。条件は「一覧画面を表示した時」を指定します。
ボタンが押された時に、「定期実行タスクを直ちに起動する」を実行します。
「定期実行タスクのカスタマイズ」には、定期実行タスクのカスタマイズを指定します。
gusuku APIキーは、画面のカスタマイズからJob Runnerのカスタマイズにアクセスするために必要です。
下記の手順で取得します。
Customineの画面右上「gusuku 共通管理」をクリックし、gusuku共通管理画面を表示します。
「APIキー」タブをクリックし、「キー名称」に任意の名称を入力し、「APIキーを新規に作成」をクリックしてください。
作成が完了すると、APIキー一覧に表示されますので、錠マークをクリックして情報を展開し、APIキーをコピーしてください。
コピーしたAPIキーを「gusuku APIキー」に指定します。
これで画面に定期実行タスクを実行するボタンができました。
「kintoneアプリへ登録」し、実行を確認してみてください。想定通りに重複チェックが実行されましたでしょうか?
以下のように追加したレコードのうち、重複しているレコードのみに「重複あり」のチェックが入っていれば成功です。
まとめ
以上で Job Runner を使用して CSV で取り込んだデータの重複チェックを行うカスタマイズのご紹介を終わります。
Customine では設定間違いによるレコード削除を避けるためレコードの削除機能は用意していませんが、重複したレコードにフラグを立てることによってこのように重複チェックを行うことが可能です。