以前の記事では、データフロープラグインを使って、
条件に合うレコードを別のkintoneアプリへコピーする基本的な方法をご紹介しました。
⇒ データフロープラグイン入門|アプリ間のデータをコピーする
今回は、そのフローに「レコード抽出」を追加し、
ANDとORを組み合わせた条件でレコードを絞り込んでみます。
「Aの条件を満たし、さらにBまたはCの条件を満たす」
といった絞り込みを行いたい場合に、 ぜひ参考にしてみてください。
目次
今回作成するフロー
今回は、「顧客リスト」から、
顧客ランクが「A」で、住所に「東京」または「神奈川」を含む顧客データを抽出し、
別のアプリへコピーします。
アプリ入力の絞り込みでは、複数の条件を設定する場合、
「すべての条件を満たす」または「いずれかの条件を満たす」のどちらかを選択します。
今回のように、「顧客ランクがA」という条件と、
「住所に東京または神奈川を含む」という条件を組み合わせる場合は、アプリ入力だけでは設定できません。
そこで今回は、「レコード抽出」の数式フィルターを使用して、
ANDとORを組み合わせた条件を設定します。
今回作成するデータフローはこちらです。
アプリ入力
↓
レコード抽出
↓
アプリ出力
① 入力を設定する
まず、コピー元となる「顧客リスト」を入力アプリに設定します。
対象レコードの絞り込みは、次の「レコード抽出」で行います。
そのため、ここでは絞り込み条件を設定せず、すべてのレコードを対象とします。
続いて、「使用するフィールドの選択」で、後続の処理に使用するフィールドを追加します。
今回は「すべて追加」をクリックし、顧客リストのすべてのフィールドを追加しました。
コピーする項目が決まっている場合は、必要なフィールドだけを個別に追加することもできます。
これで、アプリ入力の設定は完了です。
② 数式フィルターを設定する
次に、「レコード抽出」を追加し、コピーする顧客データを絞り込みます。
フィルター形式で「数式」を選択し、次の数式を入力します。
AND(
顧客ランク="A",
OR(
IFERROR(SEARCH("東京",住所),0)>0,
IFERROR(SEARCH("神奈川",住所),0)>0
)
)
この数式では、AND関数を使って、
「顧客ランクがA」と「住所に東京または神奈川を含む」という2つの条件を組み合わせています。
住所の判定にはOR関数を使用し、
「東京」または「神奈川」のどちらかが住所に含まれていれば、条件を満たすように設定しています。
SEARCH関数は、住所の中から指定した文字を検索する関数です。
文字が見つからなかった場合はエラーになるため、IFERROR関数を使って「0」に置き換えています。
これで、顧客ランクが「A」で、
住所に「東京」または「神奈川」を含む顧客だけを抽出する設定は完了です。
③ 出力を設定する
次に、抽出した顧客データのコピー先を「アプリ出力」で設定します。
今回は出力先のアプリを新しく作成し、
アプリ名を「【東京・神奈川】ランクA顧客リスト」とします。
出力方法には「追加」を選択します。
これで、数式フィルターの条件に一致した顧客データを、
「【東京・神奈川】ランクA顧客リスト」へ追加する設定は完了です。
④ 実行してみる
入力、レコード抽出、出力の設定が完了したら、作成したデータフローを実行します。
実行後、「【東京・神奈川】ランクA顧客リスト」を確認すると、
顧客ランクが「A」で、住所に「東京」または「神奈川」を含む顧客データが登録されていることを確認できます。
このように、数式フィルターを使用することで、
ANDとORを組み合わせた条件に一致するレコードだけを、別のkintoneアプリへコピーできます。
数式フィルターの設定例
今回設定した条件のほかにも、数式フィルターでは、
フィールドの値を使って計算し、その結果を抽出条件にできます。
ここでは、シンプルな例と、複数の処理を組み合わせた例をご紹介します。
高額な明細を抽出する
単価と数量を掛けた金額が、10万円以上の明細を抽出する例です。
unit_price*quantity>=100000
「単価」と「数量」から金額を計算して判定できるため、
抽出のためだけに、元のアプリへ金額の計算フィールドを追加する必要がありません。
たとえば、単価が20,000円の場合、数量が4個の明細は対象外となり、
数量が5個の明細は10万円以上となるため抽出されます。
粗利率が20%未満の案件を抽出する
売上と原価から粗利率を計算し、
粗利率が20%未満の案件を抽出する例です。
AND(
sales>0,
IFERROR(
(sales_cost)/sales,
0
)<0.2
)
売上が0より大きい案件を対象として、
「売上-原価」を売上で割り、粗利率を計算しています。
IFERROR関数を使用することで、計算時にエラーが発生した場合は「0」として扱います。
また、売上が0の案件は、最初の条件によって抽出対象から除外されます。
たとえば、売上が10万円で原価が9万円の場合、粗利率は10%となるため抽出されます。
原価が7万円の場合は粗利率が30%となるため、抽出されません。
数式内のフィールドコードや条件値は、
使用するアプリに合わせて変更してください。
まとめ
今回は、アプリ間でデータをコピーするフローに「レコード抽出」を追加し、
数式フィルターでANDとORを組み合わせる方法をご紹介しました。
アプリ入力
↓
レコード抽出
↓
アプリ出力
数式フィルターを使用することで、
アプリ入力だけでは設定できない複数の条件を組み合わせて、必要なレコードを抽出できます。
さらに、さまざまな関数や計算式を使用することで、
フィールドの値に応じた抽出条件を設定できます。
実現したいデータフローがございましたら、
構成図など、処理の流れが分かる資料を添えてお問い合わせください。
内容を確認のうえ、データフロープラグインで実現可能か検討いたします。