kintone 應用程式提供了流程管理功能,可以為每個應用程式設計專屬的流程,應用在記錄的狀態管理、審批等工作流程。根據場景與需求的不同,設計出來的流程可以說是千變萬化,少則兩個步驟,複雜起來也可以包含多個狀態、依不同條件觸發的動作,以及多條流程推進的路徑。
如果有好幾個不同的應用程式,但需要走一樣的流程,要在每一個應用程式中手動設定相同的內容就顯得相當麻煩,尤其是在流程複雜的情況下,不僅費時,也容易出錯。此外,若日後需要調整流程,沒有之前設定的備份,想要還原也無從下手。這些都是實際操作中很容易遇到的煩惱。
雖然 kintone 的基礎功能目前(本文發布於 2026 年 3 月)尚未提供直接匯出/匯入流程管理設定的功能,但在 REST API 中提供了「取得流程管理設定」以及「變更流程管理設定」兩支 API,可以透過程式碼來取得目前的流程設定資料,也能將設定更新至指定的應用程式。
本文將介紹這兩支 API 的基本資訊,並說明如何透過 Bookmarklet,在 kintone 應用程式頁面中快速執行程式碼,實現流程管理設定的匯出與匯入。
| 項目 | 內容 |
|---|---|
| 端點 | /k/v1/app/status.json |
| 方法 | GET |
| 必要參數 | app(應用程式 ID) |
呼叫此 API 後,會回傳該應用程式目前的流程管理設定,包含是否啟用流程管理(enable)、各狀態的定義(states)、可執行的動作(actions)、以及目前的修訂版本號(revision)。
| 項目 | 內容 |
|---|---|
| 端點 | /k/v1/preview/app/status.json |
| 方法 | PUT |
| 必要參數 | app(應用程式 ID)、enable、states、actions 等 |
此 API 用於更新應用程式的流程管理設定。
請注意,呼叫後設定會先進入預覽(preview)狀態,需要另外進行「應用程式部署」才會正式生效。
Bookmarklet 是一種儲存在瀏覽器書籤中的小型 JavaScript 程式,點擊書籤時會直接在目前開啟的頁面上執行程式碼,不需要另外安裝擴充功能或建置環境。
在 kintone 的應用程式頁面中,可以直接使用 kintone.api() 等 kintone 的 JavaScript API,因此只要把程式碼包成 Bookmarklet,就能在瀏覽器上一鍵執行,非常方便。
執行後,會自動取得目前應用程式的流程管理設定,並下載為 JSON 檔案。檔名格式為 process_management_{appId}_revision_{revision}.json,方便日後辨識版本。
(async () => {
'use strict'
try {
// 取得目前應用程式的流程管理設定
const appId = kintone.app.getId()
const processManagement = await kintone.api('/k/v1/app/status.json', 'GET', {
app: appId
})
const revision = processManagement.revision
console.log('取得流程管理設定:', processManagement)
// 將流程管理設定轉換為 JSON 字串並下載
const blob = new Blob([JSON.stringify(processManagement, null, 2)], { type: 'application/json' })
const url = URL.createObjectURL(blob)
const a = document.createElement('a')
a.href = url
a.download = `process_management_${appId}_revision_${revision}.json`
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
URL.revokeObjectURL(url)
window.alert('流程匯出成功!\n請檢查下載的 JSON 檔案。')
} catch (error) {
console.error('流程匯出失敗:', error)
window.alert('流程匯出失敗: ' + error.message)
}
})();
執行後,會開啟檔案選擇視窗,讀取指定的 JSON 檔案後,將流程管理設定匯入至目前的應用程式。匯入完成後,設定會進入預覽狀態,請至應用程式管理頁面確認內容並保存應用程式設定,設定才會正式生效。
(async () => {
'use strict'
try {
// 等候使用者選擇 JSON 檔案
const fileInput = document.createElement('input')
fileInput.type = 'file'
fileInput.accept = 'application/json'
fileInput.style.display = 'none'
document.body.appendChild(fileInput)
fileInput.addEventListener('change', async (event) => {
const file = event.target.files[0]
if (!file) {
window.alert('請選擇一個 JSON 檔案')
return
}
// 讀取選擇的 JSON 檔案
const reader = new FileReader()
reader.onload = async (e) => {
try {
const processManagement = JSON.parse(e.target.result)
console.log('讀取流程管理設定:', processManagement)
delete processManagement.revision
// 將流程管理設定匯入到目前應用程式
await kintone.api('/k/v1/preview/app/status.json', 'PUT', {
app: kintone.app.getId(),
...processManagement
})
window.alert('流程匯入成功!\n請至應用程式管理確認流程設定。')
} catch (error) {
console.error('流程匯入失敗:', error)
window.alert('流程匯入失敗: ' + error.message)
}
}
reader.readAsText(file)
})
fileInput.click()
} catch (error) {
console.error('流程匯入失敗:', error)
window.alert('流程匯入失敗: ' + error.message)
}
})();
revision 在變更流程設定的參數中是 kintone API 的版本檢查機制。
若傳入的 revision 值與應用程式目前實際的 revision 不符,API 會回傳錯誤,以此確保操作的對象是預期中的版本。若不需要進行版本檢查,可以不傳入 revision,或是將其指定為 -1。
本文的範例設想的是「直接匯入而不檢查版本號」的情境,因此在程式碼中加入了 delete processManagement.revision 的操作,將從匯出 JSON 中讀取到的 revision 值移除後再傳送。
要將 JavaScript 程式碼轉換為 Bookmarklet,需要先進行壓縮(minify)並加上 javascript: 前綴。可以使用網路上公開的 JavaScript 壓縮工具(搜尋「JavaScript minifier」或「Bookmarklet maker」即可找到許多選項)來處理。
壓縮完成後,將程式碼貼入瀏覽器書籤的網址欄,即可完成 Bookmarklet 的建立。
在 kintone 應用程式的清單一覽畫面中,執行剛才建立 Bookmarklet,看看是否能成功執行。


提醒:
範例程式碼使用了 kintone JavaScript API,必須在支援 kintone API 的畫面中執行(例如一覽畫面、記錄詳情頁面等)。此外,程式碼中使用了kintone.app.getId()來取得當前的 App ID,請確保在目標應用程式的頁面上執行。
使用這兩支 API 時,需要注意以下幾點:
本文介紹了如何透過 kintone REST API 搭配 Bookmarklet,快速實現流程管理設定的匯出與匯入。雖然 kintone 本身目前尚未內建此功能,但善用 API 就能輕鬆解決需要在多個應用程式間複製流程、或是想要備份設定的需求。
Bookmarklet 的好處在於不需要額外建置環境,只要一次設定好書籤,就能在 kintone 頁面上一鍵執行。這次介紹的是流程匯出與匯入,但 Bookmarklet 本身的應用不僅於此,也可以依照自己的需求撰寫其他功能。如果你也有類似的需求,歡迎試試看!