はじめに
この記事では、既存レコードのフィールドに含まれている特定の文字列を抜き出して別フィールドに転記するような処理を、複数レコードに対してループ処理を使用して一括で行うカスタマイズを、住所に含まれている都道府県の転記を例にご紹介します。
アプリ構成と実現する内容
kintone アプリストアにある「顧客リスト」を使用します。なお、このアプリを入手する際にサンプルデータを含める形でアプリを追加して頂ければ、カスタマイズを試す際にレコードを用意する必要はありません。
使用するフィールドは住所と都道府県です。ただ、この段階では「都道府県」フィールドは用意されていないので、別途追加で「都道府県」フィールド(文字列(1行))を作成しておきます。
※入手したアプリに既に設定されているフィールドとは別に今回のカスタマイズのために追加するフィールドのみ記載しています
※フィールド名とフィールドコードは同じものを設定しています
また、今回実現させる内容は、この「住所」フィールドに入力された文字列のうち都道府県部分(例:岐阜県)を「都道府県」フィールドに抜き出すような処理を、複数レコードを対象に一括で行うカスタマイズを作成する、というものです。
なお、住所フィールドから都道府県を抜き出したような結果にはなるのですが、正確に言うと、抜き出す処理を行っているわけではありません。
実際には、以下の順番で処理した結果になります。
都道府県のリストから一つずつ都道府県を取り出す
それが住所フィールドに含まれているか判定する
含まれていれば、それを都道府県フィールドにセットする
含まれていなければ、都道府県のリストから次の都道府県を取り出し、判定する
都道府県のリストからの取り出しが最後までいくまで繰り返す
処理を行ったレコード一覧の例は次の通りです。
カスタマイズ作成
ボタンの配置と読み込み中画面の表示を行う
まずは一覧画面にボタンを設置します。
続いて、このボタンを押したときのアクションとして読み込み中画面を表示します。
やること「読み込み中画面を表示する」を使用します。これは処理時間が長くなった場合にユーザーが誤ってブラウザを閉じてしまうことなどを防ぐために設定することをおすすめします。
更新対象レコードの取得
次に、処理対象となるレコードを取得する処理です。
今回は一覧の条件に合致するレコードに処理を行いたいのでやること「一覧の条件でレコードを全件取得する」を使用しています。要件に合わせてやること「条件を組み立ててレコードを取得する」や「全レコードを取得する」などに変更してお試しください。
二重ループの中で各レコードの住所から都道府県を抜き出して別フィールドに転記する
続いて、取得したレコードの数だけループさせ、そのループの中でもさらに都道府県の数だけ(47回)アクションを繰り返して、レコードを1件ずつ更新し都道府県フィールドに値をセットする、という内容の二重ループの処理を作成します。
やること「リストから要素を取り出す」と条件「いずれかのアクションの実行が完了した時」、「リストから要素を取り出した時」を使用してループ処理を行います。
ここでのポイントは、やること「リストから要素を取り出す」などを2つずつ使用して二重ループを行う点です。
1つ目の「リストから要素を取り出す」(4番)では3番で取得したレコードをリスト内の要素として使用し、取得したレコードの数だけループさせます。5レコードを取得した場合は、5回一連のアクションを繰り返すようなイメージです。
2つ目の「リストから要素を取り出す」(6番)では次のような配列の式を用いて、47都道府県を全て列挙した式を要素として使用し、47回一連のアクションを繰り返します。
= ["北海道","青森県","岩手県"、 …”沖縄県”]
なお、6番のリストに指定している式はこちらになります。コピー&ペーストしてお使いください。
そして今回の目的である各レコードの住所フィールドの都道府県部分を都道府県フィールドにセットする処理は2つ目のループ処理内で行います。
そのために7番では追加条件「2つの値を比較して条件を満たすならば」で次のように設定して条件判定を行います。
比較する値(A): = $4.住所
条件:含まれる
比較する値(B): = $6
数字の比較方法:文字として比較
内容としては、次のような条件判定を行います。
4番でリストから取り出したレコードの住所フィールドに
6番でリストから取り出した都道府県が
含まれるならば
この条件を満たしていた場合、やること「レコードを更新する(キーの値を直接指定)」のマッピングで、6番でリストから取り出した都道府県を、4番でリストから取り出したレコードの都道府県フィールドにセットするようにしてレコードを更新します。
次に、8番と9番ではやること「なにもしない」を使用します。
8番では追加条件「2つの値を比較して条件を満たすならば」で、次のような条件判定を行い、この条件を満たした場合に、2つ目のリストから次の都道府県を取り出すアクション6番に繋ぐ役割を担っています。
1つ目のリストから取り出したレコードの住所(比較する値(A))に
2つ目のリストから取り出した都道府県(比較する値(B))が
含まれないならば
なお、7番と8番の追加条件は対になる内容なので、いずれかが実行されるような条件分岐のアクションになります。
また、9番では条件「リストからの取り出しが終了した時」を使用し、2つ目の都道府県のリストを最後まで取り出した場合に、後続のアクション4番に繋いでいます。
読み込み中画面の終了と画面のリロード
ループ処理が終了したら読み込み中画面を終了し、画面をリロードします。
やること「読み込み中画面を終了する」条件「リストからの取り出しが終了した時」を使用し、読み込み中画面を終了させます。このアクションが実行されたら二重ループを抜けることになります。
また、処理結果を反映させるためにやること「画面をリロードする」でレコード一覧画面の再読み込みを行います。
処理の流れ
処理の流れはこのようなイメージです。
カスタマイズ全体像
カスタマイズの全体像はこちらになります。
アクショングラフ
今回のカスタマイズでは以下のようなアクショングラフとなります。
まとめ
このカスタマイズにより住所の都道府県の部分を転記するような処理を複数レコードに対して一括で行うことができます。
やること「リストから要素を取り出す」を活用すると、複数のレコードに対する処理を一括で行うことができるので、ほかのパターンも是非お試しいただければと思います。
ご不明な点がございましたら、チャットでお問い合わせください。
Customineドキュメントやサポートページも、ぜひご活用ください。