Job Runner

レコードをもとに別のレコードを更新または追加する

概要

指定アプリの既存レコードのデータを更新または追加します。

指定レコードのフィールド値をキーとして指定アプリを検索し、見つかったレコードをマッピングに従って更新します。

使い方

「レコードをもとに別のレコードを更新または追加する」を行うアクションよりも先に「kintone 接続設定を行う」を行うようにアクションを配置します。

マッピングの元になるレコードを何らかの方法で取得します。例えば「クエリで条件を指定してレコードを取得する」などが使用できます。このレコードを「元になるレコード」として指定します。

「レコードをもとに別のレコードを更新または追加する」を実行すると、「元になるレコード」の「キーの値となる元になるレコードのフィールド」と、「キーとなる更新先のフィールド」が一致する更新先アプリのレコードを探し、見つかった場合は「マッピング」に基づいてそのレコードの内容を更新します。見つからなかった場合は、「マッピング」に基づいてレコードを追加します。

アクションの結果として、更新または追加したレコードの集合がセットされます。ただし、追加レコードの情報はマッピングでセットされたフィールドしか参照できません。

フィールドに値をセットする」のようなフィールド値を変更するタイプの「やること」に、「レコードをもとに別のレコードを更新する」の結果値を「レコード」パラメーターとして渡せば、更にフィールド値変更を行うことができます。ただし、kintone への保存処理が2回行われることになるので、効率はよくありません。なるべく「レコードをもとに別のレコードを更新する」だけで更新を完結させることをお勧めします。

設定するパラメーター

「追加または更新先アプリ」「追加または更新先アプリの API トークン」「キーとなる更新先のフィールド」「元になるレコード」「キーの値となる元になるレコードのフィールド」「マッピング」を設定します。

追加または更新先アプリ

更新したいレコードがあるアプリを選択します。

追加または更新先アプリの API トークン

更新先アプリにアクセスするための API トークンを指定します。「kintone 接続設定を行う」を行うアクションの中から選択します。

その API トークンにはレコード閲覧権限とレコード編集権限が必要です。

キーとなる更新先のフィールド

レコードを更新する際のキーとなるフィールドを、更新先アプリから選択します。

テーブル内のフィールドは選択できません。

選択可能なフィールドタイプは以下の通りです。

  • 文字列(1行)
  • 数値
  • 計算
  • ラジオボタン
  • ドロップダウン
  • リンク
  • 日付
  • 時刻
  • 日時
  • ルックアップ(文字列)
  • ルックアップ(数値)
  • レコード番号

元になるレコード

マッピングの元になるレコードを取得したアクションを選択します。

元になるレコードの取得元アプリについて、特に制限はありません。カスタマイズ中のアプリや追加先アプリと同じでも構いませんし、逆にどちらとも違うアプリでも指定可能です。

このレコードは複数行が含まれていても構いません。複数行含まれる場合、その各行に対して順次「キーに一致する更新先レコードを探して、更新する」という処理を繰り返します。逆にレコード件数がゼロだった場合、処理は行われません。

キーの値となる元になるレコードのフィールド

「元になるレコード」のフィールドの中から、キーとして更新先レコードと比較するフィールドを指定します。

「キーとなる更新先のフィールド」の値と「キーの値となる元になるレコードのフィールド」の値が一致する更新先アプリのレコードが、更新処理の対象になります。

テーブル内にあるフィールドを選択した場合、テーブルの各行に対して処理が行われます。

選択可能なフィールドタイプは以下の通りです。

  • 文字列(1行)
  • 数値
  • 計算
  • ラジオボタン
  • ドロップダウン
  • リンク
  • 日付
  • 時刻
  • 日時
  • ルックアップ(文字列)
  • ルックアップ(数値)
  • レコード番号

マッピング

レコードに登録する情報を入力します。

このパラメーターの詳しい記述方法はフィールドマッピングの記述方法を参照してください。

このマッピングの式でフィールドコードを指定した場合、そのフィールドは「元になるレコード」のフィールドになります。

このマッピングでは @out を使用することができます。キーに一致するレコードがあった場合、@out はそのレコードを参照します。キーに一致するレコードがなかった場合、@out は空になります。

レコード取得条件の発生有無

条件 発生有無
レコード1行が準備できた時 発生しません
レコード全行が準備できた時 発生しません

競合の検出について

キーに一致するレコードが存在する場合、そのレコードを上書き保存しようとしますが、その際、更新の競合はチェックされます。

この「やること」と似ている「レコードをもとに別のレコードを更新する」では、更新の競合をチェックするかどうかは設定で選択可能ですが、この「レコードをもとに別のレコードを更新または追加する」では競合をチェックしないようにはできません。

一方、キーに一致するレコードが存在しない場合、つまり新規レコードが作成される場合は、競合はチェックされません

そのため、アクションを2人が同時に実行した場合、同じ内容の新規レコードが2つできてしまう可能性があります。これを避けたい場合、kintone アプリの設定で、キーとなるフィールドの「値の重複を禁止する」をオンにしておくことを強くお勧めします。

Webhook 通知

追加先アプリに「レコードの追加」条件で Webhook 通知を行うように設定されている場合、本「やること」を実行した結果レコードが追加されると、この通知が発生します。

「やること」の実行結果がレコード追加ではなく既存レコードの更新になった場合は、Webhook 通知は発生しません。

旧バージョンとの動作の違いについて

バージョン 1.130(2021年4月22日リリース)から、キーに一致するレコードがなく新規レコードが作成される場合の動きが変更されています。

バージョン 1.129(2021年4月15日リリース)以前のバージョンを使用して生成したジョブの場合、キーに一致するレコードがなく新規レコードが作成される場合、アクションが完了してもそのレコード追加は kintone へ反映されません。ある程度溜めてから後で反映されます。

バージョン 1.130(2021年4月22日リリース)以降のバージョンでは、アクション完了の段階で kintone アプリにレコード追加が反映されます。