在 kintone 記錄一覽畫面中,可以透過預先建立的清單,設定篩選條件與要顯示的欄位,方便使用者切換查看所需資料,是日常操作中相當實用的功能。
不過,當應用程式的使用情境較為複雜,例如同一個應用程式由不同部門或不同職責的人員共用時,每個人實際上用得到的清單往往只有幾個,卻要在一長串清單選單中找到目標,多少有些不便。
本範例將介紹如何利用 JavaScript API 中的「顯示或隱藏清單選單的選項」功能,針對不同使用者身份,只顯示對應所需的清單選項,讓畫面更加簡潔、操作更有效率。

本範例以「案件管理」應用程式為例,其中建立了多個清單,分別對應不同使用者角色的需求:
| 清單名稱 | 清單 ID | 顯示對象 |
|---|---|---|
| 負責案件一覽 | 11216847 | 一般員工 |
| 負責案件:進行中 | 11216852 | 一般員工 |
| 總管案件一覽 | 11216849 | 主管 |
| 總管案件:簽約手續 | 11216854 | 主管 |
| 一覽 | 11216844 | Administrator |
| (全部) | 20 | Administrator |
本範例使用以下 JavaScript API,切換記錄一覽畫面及圖表畫面中,清單切換下拉選單的顯示或隱藏狀態。
🔗 官方文件:顯示或隱藏清單選單的選項
| 環境 | 函式 |
|---|---|
| PC | kintone.app.showViewSelectorItems(config) |
| 行動裝置 | kintone.mobile.app.showViewSelectorItems(config) |
| 引數名稱 | 型別 | 必填 | 說明 |
|---|---|---|---|
config |
物件 | 必填 | 設定各清單選項的顯示或隱藏狀態 |
config.<清單 ID> |
字串 | 必填 | 以清單 ID 作為鍵值,指定該清單的顯示狀態:VISIBLE(顯示)或 HIDDEN(隱藏) |
此 API 為非同步函式。
回傳值為 Promise 物件。Promise 解析完成後不回傳任何值。
| 環境 | 可使用畫面 |
|---|---|
| PC | 記錄一覽畫面、圖表畫面 |
| 行動裝置 | 記錄一覽畫面 |
(() => {
'use strict'
const loginUser = kintone.getLoginUser().code
const managers = ['manager1', 'manager2']
const isManager = managers.includes(loginUser)
const views = {
// 對一般員工顯示、對主管隱藏的清單
11216847: isManager ? 'HIDDEN' : 'VISIBLE',
11216852: isManager ? 'HIDDEN' : 'VISIBLE',
// 對主管顯示、對一般員工隱藏的清單
11216849: isManager ? 'VISIBLE' : 'HIDDEN',
11216854: isManager ? 'VISIBLE' : 'HIDDEN',
// 只對 Administrator 顯示的清單
11216844: loginUser === 'Administrator' ? 'VISIBLE' : 'HIDDEN',
20: loginUser === 'Administrator' ? 'VISIBLE' : 'HIDDEN'
}
kintone.events.on('app.record.index.show', async (event) => {
await kintone.app.showViewSelectorItems(views)
return event
})
})()
const loginUser = kintone.getLoginUser().code
透過 kintone.getLoginUser() 取得目前登入的使用者資訊,並取出其登入名稱(code)。這個值將在後續判斷使用者身份時使用。
const managers = ['manager1', 'manager2']
const isManager = managers.includes(loginUser)
將主管的登入名稱事先列成陣列,再用 includes() 判斷目前登入者是否屬於主管群組。若符合則 isManager 為 true,反之為 false。
const views = {
11216847: isManager ? 'HIDDEN' : 'VISIBLE',
...
}
以清單 ID 作為鍵值,根據使用者身份設定每個清單的顯示或隱藏狀態。這裡利用三元運算子(? :)讓邏輯保持簡潔。
Administrator 的清單則另外以登入名稱直接比對,與主管/一般員工的判斷邏輯分開處理。
kintone.events.on('app.record.index.show', async (event) => {
await kintone.app.showViewSelectorItems(views)
return event
})
監聽 app.record.index.show 事件,在記錄一覽畫面顯示時呼叫 API,套用前面準備好的清單顯示設定。由於此 API 為非同步,使用 await 等待執行完成後,再 return event 結束事件處理。
本範例示範了如何利用 showViewSelectorItems API,依據使用者身份動態控制清單選單的顯示內容。在多人共用同一應用程式的情境下,這個做法能有效減少畫面上不必要的資訊,讓各個角色的使用者都能更快找到自己需要的清單。
實際應用時,可依照組織架構或業務需求調整主管名單的管理方式,例如改為從組織或群組資訊動態取得,會讓程式碼更易於維護。