複数のレコードをもとにレコードを更新する点に関しては、やること「レコードをもとに別のレコードを更新する」と同じですが、紐づくレコードが更新先アプリに存在しない際にレコード追加ができるのが、やること「レコードをもとに別のレコードを更新または追加する」です。
この記事では、「活動履歴」アプリのボタンを押すと、一覧でチェックボックスにチェックしているレコードの案件IDに紐づく「案件管理」アプリの案件状況を、ダイアログで選択した案件状況に一括更新し、もし「案件管理」アプリに紐づくレコードが無ければレコード追加するカスタマイズを作ります。実行例は次のようになります。
アプリ
カスタマイズ例を確かめるためには、2つのアプリを作成します。
※今回動かすのに必要最低限となるフィールドのみ記載しています
活動履歴
※フィールド名とフィールドコードは同じものを指定
案件管理
※フィールド名とフィールドコードは同じものを指定
カスタマイズ
カスタマイズは「活動履歴」アプリに対して行います。
また、アクションは次のように設定してください。
一覧にチェックボックス列を追加する
やること「一覧にチェックボックス列を追加する」、条件「一覧画面を表示した時」を用います。
ボタンをメニュー位置に配置する
やること「ボタンをメニュー位置に配置する」、条件「他のアクションの実行が完了した時」を用います。
ボタンを押した時に案件状況の選択ダイアログを表示
やること「選択肢から選択するダイアログを表示する」、条件「ボタンを押した時」を用います。
また、パラメータの選択肢は
受注
失注
継続
クローズ
を設定します。
OKが押されたらチェックしたレコードを取得
やること「一覧で選択されたレコードを取得する」、条件「確認・入力ダイアログで「OK」を押した時」を用います。
取得したレコードを元に別のレコードを更新または追加
やること「レコードをもとに別のレコードを更新または追加する」、条件「他のアクションの実行が完了した時」を用います。
「やること」のパラメータの、キーとなる更新先のフィールドと、キーの値となる元になるレコードのフィールドはそれぞれ「案件ID」を設定します。
元になるレコードはやること「一覧で選択されたレコードを取得する」を実行したアクション(今回の例でいうと22番アクション)を指定します。
また、マッピングは次の要領で指定してください。
解説
やること「レコードをもとに別のレコードを更新する」と似ていますが、違うところは、更新の対象となるレコードがなかった場合の動きです。
この例では、前の記事()と同様に「活動履歴」アプリの一覧画面で選択したレコードを元に、「案件管理」アプリを更新しました。さらに、パラメーター「キーの値となる元になるレコードのフィールド」である「案件ID」に一致する「案件ID」を持つレコードが「案件管理」アプリに存在しない場合には、レコード追加が行われます。
やること「レコードをもとに別のレコードを更新する」と同じく、元になるレコードを指定するために、やること「レコードをもとに別のレコードを更新または追加する」のアクションの前にレコードを取得する「やること」(例えば、やること「一覧の条件でレコードを全件取得する」など)を使ったアクションを実行しておく必要があります。
やること「レコードをもとに別のレコードを更新または追加する」は、やること「レコードをもとに別のレコードを更新する」と同様に、他の更新・追加系のやることに比べると処理時間が長くなりやすく、使用するAPIリクエスト数も多くなります。
注意点
更新元レコードのキーの値《パラメーター:キーの値となる元になるレコードのフィールド》が空のレコードが存在する場合には注意が必要です。
キーの値が空のレコードが複数存在する場合すべてキーが同一であるとみなされ、同じレコードを繰り返し更新し、最後に更新された値のみが有効となります。
具体的には以下のような動きとなります。
上記のような動作を防ぐ観点から、原則としてキーとなるフィールドは必須項目にし、値の重複を禁止する設定としておくことが望ましいです。
おわりに
この記事では、やること「レコードをもとに別のレコードを更新または追加する」を使った、レコードを元にして別アプリを更新し、別アプリに該当するレコードがなければ追加するカスタマイズをご紹介しました。
やること「レコードをもとに別のレコードを更新または追加する」を使えば、予め取得しておいたレコードを元に別のアプリのレコードを更新ないし追加することができます。
また、ご不明点等ございましたら、チャットにてご質問ください!






