操作章節 09
批次作業
對成百上千筆資料做同一件事:匯出清單、對選取的列執行操作,以及從試算表匯入。
Merak 每一個清單頁面都共用同一套批次引擎,所以這一章學會的東西在各處都適用。這裡是參考章節;各功能章節只會標註它與這裡不同的地方。
這一章能幫你完成什麼
- 身為管理員,我想匯出我篩選出來的清單,以便離線分析或封存。
- 身為管理員,我想挑出特定的列並一次處理完,讓重複的工作變成一個動作。
- 身為管理員,我想用試算表一次建立大量資料,讓新增一個部門不必打一整天字。
- 身為管理員,我想用試算表一次更新大量既有資料,讓大量調整變成一個檔案,而不是一百次編輯。
- 身為管理員,我想清楚看到每一列實際送出了什麼,才能證明改了什麼。
1. 各頁面支援的能力
| 頁面 | 匯出 | 批次操作 | 匯入 |
|---|---|---|---|
| 成員 | ✅ | 停用 · 啟用 · 解鎖 · 刪除(有強制刪除退路) | ✅ |
| 應用程式 | ✅ | 啟用 · 停用 · 刪除 | ✅ |
| 組織 | ✅ | 刪除 | ✅ |
| 使用者 | ✅ | 停用 · 啟用 · 解鎖 · 刪除 | ✅ |
| 角色 | ✅ | 刪除(系統角色除外) | ✅ |
| 稽核日誌 | ✅ | —(唯讀) | — |
| 連線日誌 | ✅ | —(唯讀) | — |
| 審批 | — | 核准 · 駁回 | — |
| Merak Node | — | —(不支援多選) | — |
審批刻意不提供匯出。 它的每一列帶的是申請內容,不是表格化的紀錄。
2. 匯出
2.1 匯出符合篩選條件的全部資料
- 點開工具列的 匯出 按鈕(與 篩選、重新整理 放在一起)。
- 對話框會確認這次匯出依照你 目前的篩選條件,並在已知時顯示總筆數。
- 確認。
接著會發生的事:
- 這個工作會加入 所有瀏覽器分頁共用的佇列。若兩個分頁同時匯出,一個執行、另一個顯示「排隊中」——伺服器不會被要求重複抓同樣的頁。
- 每次取 200 筆。
- 第一頁回來之前,進度是不確定狀態;之後顯示
已取得/總數。 - 結果以 UTF-8 含 BOM 的 CSV 下載,Excel 開啟中文才不會亂碼。
檔名格式為 <領域>-YYYY-MM-DD.csv,例如 members-2026-09-03.csv、roles-2026-09-03.csv、audit-logs-2026-09-03.csv。
2.2 只匯出你挑選的列
- 勾選要的列。
- 打開 檢視所選(N)。
- 點選 匯出所選。
檔案是 直接以畫面上既有的資料在本機寫成 的——不會送出請求——檔名為 <領域>-selection-YYYY-MM-DD.csv。
所選匯出只帶基本欄位。 描述多對多關聯的欄位——成員的應用程式、使用者的角色、角色的權限——每一列都需要額外抓一次資料,而被選取的列只是一份快照。需要那些欄位時,請用完整匯出。
2.3 關聯欄位與它們的權限
部分匯出會逐列組出關聯欄位,多個值之間以 ; 串接:
| 匯出 | 關聯欄位 | 需要的權限 | 沒有時 |
|---|---|---|---|
| 使用者 | 角色 | role:R | 整個欄位不會出現。 |
| 角色 | 權限 | permission:R | 整個欄位不會出現。 |
| 組織 | 成員、應用程式 | member:R / application:R | 該欄位不會出現。 |
你沒有權限讀的欄位,Merak 不會替你去抓資料。
2.4 匯出的權限
匯出以 該頁面自身的讀取權限 為準——能打開清單,就能匯出它。沒有更嚴格的關卡。
3. 選取列並執行操作
3.1 選取
- 每個支援批次操作的清單,每一列前面都有 核取方塊欄。
- 標題列的核取方塊 涵蓋目前這一頁,並顯示三種狀態:全選、部分、未選。
- 在同一次搜尋條件下,選取狀態 在翻頁與重新排序時都會保留。
- 執行新的搜尋時會清空(送出篩選或重設)。背景重新整理 不會 清空。
3.2 選取模式的工具列
只要勾選了任何一列,工具列原本的按鈕(篩選、重新整理、匯出、匯入、建立)就會換成兩個:
- 全部清除
- 檢視所選(N)
3.3 檢視所選對話框
它以瀏覽器中既有的快照,顯示你確切挑了哪些列——不會再送出請求。你可以逐筆移除;清空後對話框會關閉。
對話框底部是可用的批次操作,以及 匯出所選。
3.4 一個操作何時才可用
批次操作只有在 兩件事都成立 時才會啟用:
- 你持有該操作的權限,而且
- 所選的每一列都符合它的前提條件。
若只有部分符合,按鈕會顯示 M/N 筆符合,並提供 只保留符合的——一鍵修剪選擇,操作即可執行。你完全沒有權限的操作,根本不會顯示。
實際的前提條件:
| 操作 | 前提條件 |
|---|---|
| 停用(成員/使用者) | 每一列都是啟用中 |
| 啟用 | 每一列都是未啟用 |
| 解鎖 | 每一列都是已鎖定 |
| 刪除(成員/使用者) | 每一列都是未啟用/待處理/已鎖定 |
| 刪除(應用程式) | 每一列都是未啟用 |
| 刪除(角色) | 每一列都 不是 系統角色 |
| 核准/駁回 | 每一列都是待審批 |
角色是 事先 以
isSystem過濾的,而不是讓每個系統角色一筆一筆去撞伺服器再失敗——你在執行前就知道,而不是執行後才知道。
3.5 執行操作
系統會以受限的併發數逐列處理。單筆失敗絕不會中止整個批次。 結束時:
| 結果 | 你會看到 |
|---|---|
| 全部成功 | 成功通知;對話框關閉;選取清空。 |
| 部分失敗 | 對話框保持開啟,顯示成功與失敗數量,以及 每一筆失敗的原因。成功的列會自動從選取中移除,只留下失敗的讓你重試。 |
多個分頁的批次工作,與匯出走同一個共用佇列。
3.6 強制刪除
只有 成員 在「資料仍在使用中」而刪除被拒時,提供強制刪除的退路。應用程式、組織、角色與使用者都沒有——那裡刪除失敗就是失敗,必須自己先清掉相依關係。
4. 匯入
匯入有自己的全頁工作區,從清單工具列的 匯入 按鈕進入。它需要該資源的 建立 權限(C),修改模式則需要 修改 權限(U)。
路徑: /<資源>/import,例如 /member/import、/role/import。頁首帶有返回箭頭與回到清單的麵包屑。
4.1 兩種模式
| 模式 | 用途 | 需要 |
|---|---|---|
| 建立 | 建立新資料。 | <資源>:C |
| 修改 | 更新既有資料。 | <資源>:U |
兩種權限都有時,畫面會出現模式切換;所選模式會寫進網址,因此重新整理或分享連結都能保持。只有其中一種權限時,就直接使用那個模式、不顯示切換。兩種都沒有 時才會把你送回清單。
4.2 流程
下載範本 → 填寫 → 上傳 → 解析與驗證
→ 預覽與修正 → 送出 → 逐列結果報告步驟一——下載範本
範本是 CSV(UTF-8 含 BOM),標題已在地化,並帶有 數列範例,內容由你真實的資料與目前的語言組成:
- 列舉欄位使用在地化的標籤。
- 關聯欄位列出租戶裡 真實存在的名稱——角色的權限欄還會 只列出你有資格授予的。因此範例列可以原樣再匯入回去。
- 範例列涵蓋各欄位的值域:每一種狀態、開關的兩種位置、零到三個關聯項目。
在 修改 模式下,範本改為預先填入 隨機抽樣的 1–10 筆既有資料 與所有可編輯欄位,讓修改變成一個小差異,而不是重打一遍。檔名為 <領域>-create-template.csv 與 <領域>-edit-template.csv。
若沒有東西可以抽樣,Merak 會請你先建立一筆資料,而不是給你一個空檔案。
步驟二——上傳
三種方式:選擇檔案、拖放,或 直接從試算表貼上。解析在背景執行緒進行並逐列串流,因此頁面保持可操作:先是「解析 X 列中…」,接著是確定進度的「驗證 X / Y」。
拖放區下方有一個 欄位說明 面板,解釋每一個欄位:哪些必填、列舉欄位接受什麼、開關欄位有哪些字算開/關、多值怎麼寫,以及——關於關聯欄位——名稱必須與主控台完全一致。
上限為 500 列。 超過會擋下送出,並請你拆檔。
步驟三——解析與驗證
驗證分成兩層。
列舉欄位(狀態、通訊協定類型)接受 在地化文字。先做精確比對,再做模糊比對——容許拼音與少量錯字——兩者都不成立才報錯。
布林欄位 接受中英文的廣泛詞彙。所有布林欄位都認得這組共用字彙:
| 意義 | 可接受的字詞 |
|---|---|
| 開 | true、1、yes、y、on、enable、enabled、是、開啟、啟用、打開、啟動 |
| 關 | false、0、no、n、off、disable、disabled、否、關閉、停用、停止 |
個別欄位還可以額外加上自己的字彙。例如成員匯入的 強制 MFA 欄位,開的部分另外接受 enforce、enforced、required、mandatory、強制、要求、必須;關的部分另外接受 optional、not required、不強制、免、非必要——這些是該欄位專有的,不屬於共用字彙。
你檔案裡用的字,與主控台目前的顯示語言無關。
關聯欄位(使用者的角色、角色的權限、組織的成員與應用程式)每一筆可以有多個值——重複標題欄,或在同一格內以 ; 分隔。每個值都是 名稱,採 精確比對;這裡刻意 不 使用模糊比對,避免差一點的名稱把你綁到錯的角色或錯的權限上。同一格內的重複值會自動去重;比對不到任何東西的名稱則是錯誤。
接著是 列層級規則,套用一般的欄位驗證——名稱長度、電子郵件格式、描述長度等等。
步驟四——錯誤與警告
兩種嚴重程度,行為不同。
| 嚴重程度 | 標記 | 是否阻擋送出 |
|---|---|---|
| 錯誤(硬) | 紅色儲存格、錯誤訊息 | 是 |
| 警告(軟) | 琥珀色圓點、行內提示 | 否 |
刻意只當成警告的情況:
- 顯示名稱重複。 後端允許兩個人同名,因為兩個人真的可能同名。該列仍然有效,會被計入「N 列有提示」。
- 修改模式下 兩列對應到同一筆既有資料。每一列都會標註「第 N 列也會更新這筆資料」——後送出的那筆生效。兩列各自編輯同一筆資料的不同欄位,是合理的用法。
屬於硬錯誤的情況:
- 無法解析的列舉、布林或關聯值。
- 欄位規則不通過。
- 非法的狀態轉換。 狀態欄位背後有一台狀態機,預覽的狀態下拉只提供得到的值。匯入不能變成繞過生命週期的後門。
步驟五——預覽與修正
預覽是所有列的虛擬化清單,帶有有效、無效與自動修正的數量統計,以及 只顯示錯誤 的切換。
| 欄位類型 | 編輯器 |
|---|---|
| 列舉 | 有效值的下拉選單。 |
| 布林 | 帶標籤的開關。 |
| 關聯 | 多選,並在輸入時做伺服器端搜尋。已選項目以標籤呈現;解析不到的名稱會是 紅色標籤。 |
| 文字 | 行內文字欄位。 |
你也可以:
- 把某個值套用到所有原本值相同的列。
- 手動新增一列,不必回去改 CSV。建立模式下,新列會以輪替的範例資料預填(避免多個新列互相衝突);修改模式下則留白,因為修改列的目的是 定位 一筆既有資料,不是憑空生一筆。
- 附加第二個檔案。 把另一份 CSV 拖到預覽區——或使用 附加匯入檔案——會把它的列 合併 進這批,而不是取代。依部門或站點拆開的來源資料,不必先手動合併。附加的檔案會在剩餘列數額度內解析;超過會提示,而不是默默截斷;已經滿 500 列的批次會直接拒絕。若附加檔案解析失敗,只有那個檔案不會進來——預覽與你既有的列完全不受影響。
- 刪除列。
步驟六——定位資料(僅修改模式)
修改模式的每一列,都必須先對應到一筆既有資料才能送出。
- 比對順序 依資源而異:先 ID、再電子郵件、再名稱(使用者與成員);先 ID、再名稱(角色與組織)。
- 鍵值過期不會讓該列走進死路——編輯任何一個可比對的欄位就能重新定位。
- 名稱重複 會被標為模糊,透過自動完成解決。
- 比對不到 的列會以唯讀顯示匯入的值,並開放可比對的欄位供編輯;名稱、電子郵件或 ID 上的防彈跳自動完成,一旦解析到恰好一筆資料就會把該列釘住。
- 撤銷比對 會在不動資料的情況下解除釘選。該列回到未比對狀態,可比對欄位重新開放,並退出這次送出。撤銷期間刻意 不 重跑比對——否則它會立刻又把你剛剛否決的那筆釘回來。編輯任一比對鍵會解除撤銷並重新定位;重新比對 則可隨時手動觸發。
步驟七——修改模式實際送出什麼
只有與現值不同、而且非空白的欄位會被送出。 空白儲存格的意思是「別動這個」,永遠不是「把它清空」。若某欄位可以刻意清空,請用 \N(例如組織或角色的描述)。
兩個值得知道的安全立場:
- 修改模式下,狀態與強制 MFA 欄位沒有預設值。 空白儲存格會被略過,絕不套用。匯入不會默默把帳號改成待處理,也不會默默關掉 MFA 強制。
- 關聯欄位在修改模式下不會出現。 集合式的同步目前尚未提供——請使用該筆資料自己的編輯畫面。
步驟八——送出
每一列以受限的併發數個別送出,失敗的列不會擋住其他列。
當一列同時建立資料 與 它的關聯時,組合規則各有不同:
| 匯入 | 關聯寫入失敗時 |
|---|---|
| 使用者 | 整列失敗。 一個沒有預期角色的使用者,不是有用的結果。 |
| 角色 | 該列仍算成功。 只有角色本體建立失敗才會讓該列失敗。 |
| 組織 | 關聯失敗可容忍;只有組織本體失敗才會讓該列失敗。 |
步驟九——結果報告
完成畫面是一份 逐列報告,不是兩個數字:
- 列號、資料,以及成功或失敗原因。
- 失敗的列排在最前面。
- 檢視送出的資料 可展開該列實際送出的內容。修改模式下以 舊值 → 新值 呈現,並附上該筆資料詳細頁的連結。建立模式下拿不到新資料的 ID,因此直接省略連結欄,而不是留一個空白。
- 下載失敗列 會產生一份只含失敗列的 CSV,可以修好之後直接再匯入。
- 返回 回到清單。
多個分頁同時進行的匯入,會與匯出、批次操作共用同一個佇列依序執行。
5. 清單的個人化設定
有兩項清單設定存在你的瀏覽器裡,並會出現在 偏好設定 中。
5.1 欄位設定
表格操作欄標題上的齒輪會開啟一個對話框,可勾選欄位顯示或隱藏,並拖曳調整順序。列號欄(永遠第一)與操作欄(永遠最後)是固定的。
此設定依瀏覽器保存,登出後仍在。重設為預設 可以逐表執行,在這裡或在偏好設定都可以。
5.2 預設篩選
在篩選面板中,存為預設 會把面板上目前顯示的條件——包含還沒送出的——存在這台機器上,並在分頁之間同步。
- 下次你在 網址不帶任何篩選參數 的情況下開啟清單,就會自動套用預設並展開面板。
- 網址上已經帶條件時一律以網址為準,因此明確的查詢或分享出去的連結絕不會被覆蓋。
- 自動套用 每次造訪只會發生一次。
- 清除預設 可從面板或偏好設定移除它。
6. 權限總表
| 工作 | 權限 |
|---|---|
| 匯出清單 | 該清單的讀取權限 |
| 匯出中的關聯欄位 | 該關聯的讀取權限(否則整欄不出現) |
| 批次操作 | 與單列操作相同的權限 |
| 進入並送出匯入 | <資源>:C(建立)/<資源>:U(修改) |
| 匯入關聯欄位 | 該關聯的讀取權限 |