スポンサーリンク

【pleasanter】リンクとルックアップ②フィルタ、ソート

プリザンター
スポンサーリンク
※当サイトは広告を含みます

※おことわり
2025年8月時点の情報です。プリザンターのバージョンは 1.4.18.1 です。Google Chrome でやっています。
javascript,html,cssともに初心者です。調べながら、やってみながら、きっとこうすればいいんだ!という感じで書いていますので、間違っている、または効率的な書き方ではない可能性が大いにあります。間違ってるよ!とか、こうしたほうがいいよ!ということがありましたら、コメント等で教えていただけると大変ありがたいです。

1.はじめに

前回、プリザンターのリンクについて、をやりました。
【pleasanter】リンクとルックアップ①リンクの基本

リンク先テーブルから選択肢を表示するとき、「この並び順になってほしいな~」とか、「『ステータス』が『廃止』の選択肢は表示したくないな~」とか、ありませんか?ありますよね!!!

今回はちょっと踏み込んで、選択肢をフィルタしたり、ソートしたりをやってみたいと思います。

2.どうやってやるか

前回ちらりと触れましたが、JSON形式で指定します。
指定内容等詳細は公式サイトにあります。
選択肢一覧で設定可能なJSONパラメータ
開発者向け機能:JSONデータレイアウト:View

よく使う、フィルタ、ソートを中心に、サンプルデータでやってみましょう!

3.使用するサンプルテーブル

前回に引き続き、「商品マスタ」と「販売記録」でやってみます。
いろいろな種類の項目をやってみたいので「商品マスタ」には日付項目やチェック項目、文字列項目などを追加しています。

■商品マスタ【親】(サイトID:1414)

項目表示名メモ
タイトル商品名これがキーとなります!リンク先のテーブルに表示される項目です。
分類A商品区分100,食品/200,雑貨/300,その他
数値A単価
状況状況100,有効/900,無効
日付A販売開始日
チェックAキャンペーン対象
分類B販売エリア選択肢:関東、関西
分類C備考選択肢無し、文字列を入力

■販売記録【子】

項目表示名メモ
タイトルタイトル
日付A受注日
分類A商品名ここを「商品マスタ」テーブルと連結させます!
数値A個数
数値B単価
数値C金額

4.フィルタ

テーブルをリンクさせた分類項目では、通常は親テーブルのレコードすべてを選択肢として表示します。表示する選択肢を限定するには、子テーブルのリンクを設定した分類項目の設定で指定します。

例1:状況(Status)が100:有効 のレコードのみ選択肢に表示する。

商品マスタ(親テーブル)イメージ

リンクを設定する 子テーブル「販売記録」で設定します。

選択肢の設定を [[1414]] から以下のように変更します。

[
    {
        "SiteId": 1414,
        "View": {
            "ColumnFilterHash": {
                "Status": "[\"100\"]"
            }
        }
    }
]

ColumnFilterHash で Status を 100 で絞り込みしています。
[“100”] と指定しますが、さらにそれを””で囲む必要があるため、中のダブルクォーテーションの前にエスケープ文字の\が必要です。で、”[\“100\“]” とします。(環境により\はバックスラッシュになる場合もありますが意味は同じなのでどちらでも大丈夫です)

例2:状況(Status)が100:有効、単価(NumA)が800円以上

販売記録テーブルの分類Aの選択肢一覧に以下のコードを入力します。
サバの塩焼き、卵、コシヒカリ5kg の3商品のみ選択肢に表示されるはずです。

[
    {
        "SiteId": 1414,
        "View": {
            "ColumnFilterHash": {
                "Status": "[\"100\"]",
                "NumA":"[\"800,\"]"
            }
        }
    }
]

できました!

“NumA”:”[\”800,\”]” は800以上を表しています。
その他の例:
800以上1000以下 ⇒ “NumA”:”[\”800,1000\”]”
1000以下 ⇒ “NumA”:”[\”,1000\”]”
指定の仕方はこちらに詳しく載っています。
開発者向け機能:JSONデータレイアウト:View

例3:状況(Status)が100:有効、商品区分(ClassA)が200雑貨 および 900その他 【複数項目】

[
    {
        "SiteId": 1414,
        "View": {
            "ColumnFilterHash": {
                "Status": "[\"100\"]",
                "ClassA":"[\"200\",\"900\"]"
            }
        }
    }
]

商品区分が雑貨とその他のスマイルが選択肢に表示されました!

このように、複数項目で絞り込みすることも可能です。

例4:販売開始日(DateA)が 2025/7/1 以降

[
    {
        "SiteId": 1414,
        "View": {
            "ColumnFilterHash": {
                "DateA":"[\"2025/07/01 00:00:00,\"]"
            }
        }
    }
]

例5:キャンペーン対象(ChackA)が オン

[
    {
        "SiteId": 1414,
        "View": {
            "ColumnFilterHash": {
                "CheckA":"true"
            }
        }
    }
]

“CheckA”:”True” でも “TRUE” でも行けました。チェック オフ を指定したい場合は “false” と指定します。

例6:販売エリア(ClassB)が「関西」

※ClassBは値の指定はなく、表示名の選択肢のみ設定されています。

[
    {
        "SiteId": 1414,
        "View": {
            "ColumnFilterHash": {
                "ClassB":"[\"関西\"]"
            }
        }
    }
]

例7:備考(ClassC)が「CCC」【文字列の絞り込み】

下図の4つが備考にCCCを含むレコードです。
※備考(ClassC)は選択肢ではなく、説明項目のように文字列を直接入力する項目です。

以下の指定はCCCを含むになるようですね。

[
    {
        "SiteId": 1414,
        "View": {
            "ColumnFilterHash": {
                "ClassC":"CCC"
            }
        }
    }
]

完全一致は以下のコードで指定できました。ColumnFilterHash と合わせて ColumnFilterSearchTypes を指定します。(私の環境ではColumnFilterHashのClassCを配列に入れないとダメだった)

[
    {
        "SiteId": 1414,
        "View": {
            "ColumnFilterHash": {
                "ClassC":"[\"CCC\"]"
            },
            "ColumnFilterSearchTypes":{
                "ClassC":"ExactMatchMultiple"
            }
        }
    }
]

CCCで始まる、は以下の指定で行けました。ColumnFilterSearchTypes に ForwardMatch を指定します。

[
    {
        "SiteId": 1414,
        "View": {
            "ColumnFilterHash": {
                "ClassC":"CCC"
            },
            "ColumnFilterSearchTypes":{
                "ClassC":"ForwardMatch"
            }
        }
    }
]

CCCまたはEEEと一致(文字列の複数条件)

[
    {
        "SiteId": 1414,
        "View": {
            "ColumnFilterHash": {
                "ClassC":"[\"CCC\",\"EEE\"]"
            },
            "ColumnFilterSearchTypes":{
                "ClassC":"ExactMatchMultiple"
            }
        }
    }
]

「CCC」または「EEE」に一致する選択肢が表示されました。

その他 ColumnFilterSearchTypes の指定方法等も公式サイトに詳しく載っていました。
開発者向け機能:JSONデータレイアウト:View

例8:否定条件

「含まない」は ColumnFilterNegatives に配列で 否定条件を指定する項目を指定します。
元データ側のテーブルのフィルタの設定で「否定フィルタを使用する」をオンにしている場合のみ、有効になります。

例:分類Cに「CCC」を含まない

[
    {
        "SiteId": 1414,
        "View": {
            "ColumnFilterHash": {
                "ClassC":"CCC"
            },
            ColumnFilterNegatives: [
                "ClassC"
            ]
        }
    }
]

例:状況(Status)が900ではない、かつ、区分(ClassA)が100食品

[
    {
        "SiteId": 1414,
        "View": {
            "ColumnFilterHash": {
                "Status": "[\"900\"]",
                "ClassA":"[\"100\"]"
            },
            ColumnFilterNegatives: [
                "Status"
            ]
        }
    }
]

4.並べ替え(ソート)

並べ替えは、割と単純です。
View の ColumnSorterHash に、項目名:昇順(asc)または降順(desc) と指定します。

例:商品区分(ClassA) 昇順、単価(NumA) 降順 の並び順で選択肢を表示

[
    {
        "SiteId": 1414,
        "View": {
            "ColumnSorterHash":{
                "ClassA":"asc",
                "NumA":"desc"
            }
        }
    }
]

例:フィルターとソートの両方

・区分(Status)が100有効 のみ表示
・商品区分(ClassA) 昇順、単価(NumA) 降順 の並び順で選択肢を表示

[
    {
        "SiteId": 1414,
        "View": {
            "ColumnFIlterHash":{
                "Status":"[\"100\"]"
            },
            "ColumnSorterHash":{
                "ClassA":"asc",
                "NumA":"desc"
            }
        }
    }
]

5.SearchFormat

どちらかというとユーザーや組織を選択肢に指定するときに使用するイメージですが、普通の分類項目でもできるのかなと思ってやってみたところ、できました。

[検索機能を使う]のチェックをオンにしたときに、選択肢画面に表示されるフォーマットを指定できます。

・商品名【商品区分】単価:xxx の表示とする

以下のコードを商品名の選択肢に設定します。

[
    {
        "SiteId": 2,
        "SearchFormat": "[Title]【[ClassA]】単価:[NumA]"
     }   
]

すると、下図のような表示となります。

場合によっては、項目を選択する際の参考となるかもしれませんね。

6.最後に

とにかくいろいろやってみました(ハアハア。。。息切れ)

これで、忘れてもここ見ればコピペでOK!

次回、ルックアップをやります!

7.参考文献、記事

公式マニュアル
テーブルの管理:エディタ:項目の詳細設定:選択肢一覧:リンク
テーブルの管理:リンク
応用編:リンク
選択肢一覧で設定可能なJSONパラメータ

内部リンク:リンクとルックアップシリーズ
【pleasanter】リンクとルックアップ①リンクの基本
【pleasanter】リンクとルックアップ②フィルタ、ソート
【pleasanter】リンクとルックアップ③ルックアップ

もう読みました?プリザンターの概要、インストール方法から基本操作方法、導入事例、サンプル等役に立つ情報が満載!

コメント

タイトルとURLをコピーしました