ブログ

データフロープラグイン入門|フィルターを使ったアプリ間コピー

以前の記事では、データフロープラグインを使って、
条件に合うレコードを別の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を組み合わせる方法をご紹介しました。

アプリ入力
↓
レコード抽出
↓
アプリ出力

数式フィルターを使用することで、
アプリ入力だけでは設定できない複数の条件を組み合わせて、必要なレコードを抽出できます。

さらに、さまざまな関数や計算式を使用することで、
フィールドの値に応じた抽出条件を設定できます。

実現したいデータフローがございましたら、
構成図など、処理の流れが分かる資料を添えてお問い合わせください。
内容を確認のうえ、データフロープラグインで実現可能か検討いたします。

ブログ一覧に戻る