none
SPOのカスタムリスト一覧画面において、日付のFrom~Toフィルタを動的に設定する方法について RRS feed

  • 質問

  • お世話になります。

    SPOの標準のカスタムリスト上で、日付をFrom~Toで動的に絞り込みをかけたいと考えております。
    完全一致のフィルタであれば、URLパラメータに「FilterField1=内部名&FilterValue1=検索値」を設定することでフィルタ設定できることは知っているのですが、日付の範囲検索する方法をしたいです。

    現在は上記方法でリストAのデータ内の値を検索値として画面遷移を実行させることで、そのアイテムに紐づくデータだけを一覧表示という方法を取っているのですが、なんらかの手段によって日付検索を実行する事は可能でしょうか。
    • 編集済み sttks 2019年4月18日 9:55
    2019年4月18日 9:54

回答

  • ちょっと試してみた感じだと、下記のような感じではどうでしょうか??

    ?FilterField1=Created&FilterValue1=2018-06-07&FilterOp1=Geq&FilterField2=Created&FilterValue2=2018-06-12&FilterOp2=Leq

    モダンリストの場合は、

    ?useFiltersInViewXml=1&FilterField1=Created&FilterValue1=2018-06-07&FilterOp1=Geq&FilterField2=Created&FilterValue2=2018-06-12&FilterOp2=Leq

    と、最初に useFiltersInViewXml=1 が必要かもしれません。

    • 編集済み OTA HirofumiMVP 2019年4月22日 5:19
    • 回答としてマーク sttks 2019年5月7日 6:23
    2019年4月22日 5:03
  • OTA Hirofumi 様

    いつもお世話になっております。ご回答ありがとうございます。

    早速試してみたのですが、どうやら複数フィルターを設定した時に、FilterField・Value1でセットした内容が正常に適用出来ないようです。
    hogeDateに2019-04-18と2019-04-19が設定されている2データが登録されている状態で、
    以下のパラメータを設定したところ、2データとも表示されてしまいました。
    ?FilterField1=hogeDate&FilterValue1=2019-04-19&FilterOp1=Geq&FilterField2=hogeDate&FilterValue2=2019-04-19&FilterOp2=Leq

    FilterValue2の値を2019-04-18や2019-04-17に変更すると期待通りにデータの絞り込みが行われるようなので、FilterOpは機能しているようです。
    FilterOpの存在を初めて知りました。ありがとうございます。

    試しにFilterField1の対象列をhogeDateからCreatedに変えてみたところ、FilterValue1の値に応じて正常に絞り込みが行われました。このURLパラメータでのフィルタ設定は1つの列に複数の条件指定が出来ないようですね。。。
    検索用に集計列で絞り込み列を分身させますかね。。。


    • 編集済み sttks 2019年4月22日 5:43
    • 回答としてマーク sttks 2019年5月7日 6:23
    2019年4月22日 5:40
  • なるほど…、試してみた感じだと、モダンリストだと期待通りに動くように見えますが、クラシックリストだと期待通りに動かないですね…
    2019年4月22日 6:36

すべての返信

  • こんにちは。

    カスタムリストそのものでなくて検索結果であれば範囲指定で絞り込みができるのですが…。

    カスタムリストでやりたいのであれば、FilterValue1に「2019-04-18;#2019-04-19」みたいに複数の値を入れることで範囲指定?をすることはできるかもしれません。

    2019年4月19日 0:30
  • Takashi Shinohara 様

    いつもお世話になっております。ご回答ありがとうございます。

    んーやはり難しいでしょうか。
    ご提案頂いた方法を試してみたのですが、2番目に設定した値が上手く入ってくれず、「1899/12/30」で絞り込まれてしまいました。

    参考までに検索結果での指定方法も教えていただくことは可能でしょうか?
    標準でできなさそうであれば最悪ゴリゴリ作り込みます。。。
    2019年4月22日 1:12
  • ちょっと試してみた感じだと、下記のような感じではどうでしょうか??

    ?FilterField1=Created&FilterValue1=2018-06-07&FilterOp1=Geq&FilterField2=Created&FilterValue2=2018-06-12&FilterOp2=Leq

    モダンリストの場合は、

    ?useFiltersInViewXml=1&FilterField1=Created&FilterValue1=2018-06-07&FilterOp1=Geq&FilterField2=Created&FilterValue2=2018-06-12&FilterOp2=Leq

    と、最初に useFiltersInViewXml=1 が必要かもしれません。

    • 編集済み OTA HirofumiMVP 2019年4月22日 5:19
    • 回答としてマーク sttks 2019年5月7日 6:23
    2019年4月22日 5:03
  • OTA Hirofumi 様

    いつもお世話になっております。ご回答ありがとうございます。

    早速試してみたのですが、どうやら複数フィルターを設定した時に、FilterField・Value1でセットした内容が正常に適用出来ないようです。
    hogeDateに2019-04-18と2019-04-19が設定されている2データが登録されている状態で、
    以下のパラメータを設定したところ、2データとも表示されてしまいました。
    ?FilterField1=hogeDate&FilterValue1=2019-04-19&FilterOp1=Geq&FilterField2=hogeDate&FilterValue2=2019-04-19&FilterOp2=Leq

    FilterValue2の値を2019-04-18や2019-04-17に変更すると期待通りにデータの絞り込みが行われるようなので、FilterOpは機能しているようです。
    FilterOpの存在を初めて知りました。ありがとうございます。

    試しにFilterField1の対象列をhogeDateからCreatedに変えてみたところ、FilterValue1の値に応じて正常に絞り込みが行われました。このURLパラメータでのフィルタ設定は1つの列に複数の条件指定が出来ないようですね。。。
    検索用に集計列で絞り込み列を分身させますかね。。。


    • 編集済み sttks 2019年4月22日 5:43
    • 回答としてマーク sttks 2019年5月7日 6:23
    2019年4月22日 5:40
  • なるほど…、試してみた感じだと、モダンリストだと期待通りに動くように見えますが、クラシックリストだと期待通りに動かないですね…
    2019年4月22日 6:36
  • あ、当方クラシック環境にて検証しておりました。
    なるほど、モダンリストでは動作するのですね。

    ずっとクラシック環境で開発してきたのでその辺りの前提情報がすっぽ抜けてました。気をつけます。

    2019年4月22日 7:26
  • 参考までに

    SharePoint で検索クエリを作成する

    KQLとFQLがあって(FQL使ったことないですが)たぶん日付範囲指定もできるんじゃないかと。

    SharePointの検索プロパティの設定もあったりするのと、そもそも検索結果の精度やタイムラグ的な話があるので、あまり現実的ではないかもしれませんが、どうしても必要となったら実現できると思います。

    2019年4月25日 2:01
  • Takashi Shinohara 様

    検索についての詳細ありがとうございます。SPO開発始めたての頃にちょっとだけ触った覚えがあります。
    SharePointの検索はイマイチ仕様が掴みきれてなくて扱いが難しいんですよね。。。
    2019年5月7日 6:23