みんなの投稿

一覧を作成する時、日付を含む複雑な条件設定がしたい!


以前、「一覧を作成する際、複雑な条件設定ができずに困った事はありませんか?」という記事で、

「一覧の設定では『すべての条件を満たす』と『いずれかの条件を満たす』のどちらかしか選べない。だったらIF式で表示制御用のフラグを作っちゃおう!」

という方法をご紹介しました。

しかし、IF式でTODAY関数を使えないため、「日時を含む条件(例:「翌日以降」)やステータスを利用した条件は、計算式では使用できません。」というのがネックでした。

でも、「できません」って言われると、逆にやりたくなりませんか?😏

そこで今回は、標準機能だけで日時を含む AND・OR 混在の条件を実現する方法をご紹介します!

今回はこの二つの条件を満たす一覧を作成します。

①フィールド1が「ほげほげ」を含む
②日付が空欄、もしくは本日以降

まず、この条件を一覧で設定します。

image.png
image.png

(当然この時点では「データがありません」と表示されます。)

ここでURLをチェックします。

image.png

注目すべきは「q=」の後ろから「#sort」の間です。
ここに3つの条件が入っています。URLエンコードされているので、

 %20 → 半角スペース
 %3D → =

に読み替えます。すると、次のような式が見えてきます。

 ① f13328955 like "ほげほげ"
 ② f13328954 = ""
 ③ f13328954 >= TODAY()
この3条件がandで結合されていますね。

「f13328955」がフィールド1、「f13328954」が日付フィールドである事も分かります。

作りたいのは次の条件式です。

  f13328955 like "ほげほげ" and (f13328954 = "" or f13328954 >= TODAY())

なので、元のURLの「q=」の後ろ部分を書き換えます。

 https:// sample.cybozu.com/k/735/?view=20&q= f13328955 like "ほげほげ" and (f13328954 = ""  or f13328954 >= TODAY())#sort_0=f13328787&order_0=desc&size=20

これで条件を満たすURLは完成です!
このURLをブラウザに貼り付けると、確かに条件を満たすものだけが表示されている事が分かります。

image.png

毎回作るのは大変なので、ポータルやアプリの説明欄にリンクを貼り付けておくのがお勧めです。(自分だけが使うなら、ブックマークでもいいですね。)

また、「ほげほげ」部分が可変なら、「他のアプリの一覧を、絞り込んだ状態で開けるURLを自動作成する方法」を応用して別アプリから開けるようにするのも便利ですよ。

一覧の条件設定画面からは実現できないケースでも、URLを少し工夫すると意外となんとかなるかもしれません。ぜひ試してみてください!
1件のコメント (新着順)

前回に続いて、これも目からウロコでした!

さっそくデモ環境で試してみたんですが、パラメータを q= ではなく query= にすると、内部フィールドIDではなくフィールドコードのまま書けました。

https://sample.cybozu.com/k/123/?query=フィールド1 like "ほげほげ" and (日付 = "" or 日付 >= TODAY())

日本語のままアドレスバーに貼れば、エンコードはブラウザがやってくれます。

ただ、こっちにも弱点がありました。
フィールドコードを変更すると400エラーで切れます。
内部フィールドIDのほうは変わらないので、記事の q= で作ったリンクはそのまま生き残るんですね。
読みやすさを取るか、壊れにくさを取るかの使い分けかなと思います。

あと、日付の空欄の扱いが非対称なのも面白かったです。

= TODAY() には入らないのに、< TODAY() には入るんですね。
記事の 日付 = "" or 〜 は、空欄を拾うのに必要な書き方だったんだなと。

毎回いい気づきをいただいてます。ありがとうございます!


ありがとうございます!
「query=」にするとフィールドコードをそのまま指定できるんですね!初めて知りました。
フィールドコードを後から変更しない運用なら、こちらの方が分かりやすくて良さそうです。

「日付が空欄」のレコードの扱いはなかなか悩ましいところなんです。
降順で表示すると、「未来の日付 > 今日 > 過去 > 空欄」の順に並びます。
ここで、「終了したものは表示しなくてよい」という条件で、今日以降のレコードを表示させようとすると、「未来の日付 > 今日」だけが表示され、空欄が除外されてしまいます。
でも運用上は「空欄は未定なだけで、終わったわけではないので表示しておきたい」というのが本音でして…。
そこで生まれたのが、今回の方法だったわけです。

こういう絞り込みは、PHPで画面表示時だけに処理をかけるサービスも多いですが、kintoneはちゃんとURLと連動してくれているので、いろいろ試せるところが面白いです。
こういう作りにしてくれているサイボウズさんに感謝です!

URLには確かに絞り込み条件が存在するのは認識していましたが、それを直接編集して通常画面からは指定できない絞り込み条件を実現してしまうのに、私も目からウロコでした…!!
これは今まで複数のフィールドの絞り込みでANDとORは掛け合わせられないので、絞り込み用の計算フィールドを作る事しか考えていませんでしたが、一時的なものであれば簡単ですね。
(頻繁に条件を変えて絞り込む機会があるなら、絞込み用計算フィールドがあった方が良いのでしょうけど…)
使い分けだと思うので、自社環境でも意識して見てみます!ありがとうございます。