在 kintone 的清單一覽畫面中,我們可以透過「篩選器」設定條件,過濾出想查找的記錄。不過在某些情境下,篩選器的功能可能無法完全滿足使用者的需求。
假設我們希望在「產品出貨記錄」中,篩選出狀態為「已出貨」,且產品代碼為「JCL-RX9000」或是產品代碼包含「MX」的記錄。
在篩選器中,我們可以設定以下三個條件:
然而,kintone 的篩選器僅提供「滿足所有條件」或「滿足任一條件」兩種邏輯運算方式。
若選擇「滿足所有條件」,實際的查詢為:
條件一 AND 條件二 AND 條件三
由於沒有任何一筆記錄能同時滿足這三個條件,因此結果為「無符合記錄」。
若改成「滿足任一條件」,查詢邏輯變成:
條件一 OR 條件二 OR 條件三
但這樣的結果也不符合我們的需求。
換句話說,kintone 的篩選器無法設定成「條件一 AND (條件二 OR 條件三)」的組合。
如果條件二與條件三的比對方式皆為「等於」,可考慮直接列出所有可能值,如下:
範例如下:
這樣就能夠正確篩出我們想要的記錄。
但若資料種類繁多,手動列出所有值會非常不實際。
query
參數在這種情況下,我們可以直接透過網址列中的 query
參數,自訂進階的篩選條件。
例如:
狀態 in ("已出貨") and (產品代碼 = "JCL-RX9000" or 產品代碼 like "MX")
將上述條件加到清單頁的網址列中:
https://sample.cybozu.com/k/123/?query=狀態 in ("已出貨") and (產品代碼 = "JCL-RX9000" or 產品代碼 like "MX")
請注意:query
參數需要經過 UTF-8 編碼,瀏覽器可能會自動將空格轉換成 %20
。只要格式正確,透過此網址進入後就能看到符合條件的記錄:
若直接貼上原始 query 出現錯誤,可以打開開發者工具(DevTool)的 Console,使用以下 JavaScript 方法進行轉碼:
encodeURIComponent('狀態 in ("已出貨") and (產品代碼 = "JCL-RX9000" or 產品代碼 like "MX")')
你也可以搭配原生篩選器操作,在 Console 使用:
kintone.app.getQueryCondition()
這樣可以先透過 UI 設定基本條件,再將取得的 query 字串稍作修改(例如加上 and (...)
或調整邏輯運算),就能更快速完成複雜篩選設定。
雖然這種操作方式對初學者來說不算直觀,但當遇到複雜邏輯的篩選需求時,透過網址列 query
參數仍是一種彈性高、無須額外開發的解法。不妨試著套用看看,也許能解決你在 kintone 使用上的某些小困擾!