iT邦幫忙

0

【kintone】透過 Bookmarklet 匯出/匯入應用程式流程管理設定

  • 分享至 

  • xImage
  •  

kintone 應用程式提供了流程管理功能,可以為每個應用程式設計專屬的流程,應用在記錄的狀態管理、審批等工作流程。根據場景與需求的不同,設計出來的流程可以說是千變萬化,少則兩個步驟,複雜起來也可以包含多個狀態、依不同條件觸發的動作,以及多條流程推進的路徑。

如果有好幾個不同的應用程式,但需要走一樣的流程,要在每一個應用程式中手動設定相同的內容就顯得相當麻煩,尤其是在流程複雜的情況下,不僅費時,也容易出錯。此外,若日後需要調整流程,沒有之前設定的備份,想要還原也無從下手。這些都是實際操作中很容易遇到的煩惱。

雖然 kintone 的基礎功能目前(本文發布於 2026 年 3 月)尚未提供直接匯出/匯入流程管理設定的功能,但在 REST API 中提供了「取得流程管理設定」以及「變更流程管理設定」兩支 API,可以透過程式碼來取得目前的流程設定資料,也能將設定更新至指定的應用程式。

本文將介紹這兩支 API 的基本資訊,並說明如何透過 Bookmarklet,在 kintone 應用程式頁面中快速執行程式碼,實現流程管理設定的匯出與匯入。

API 介紹

取得流程管理設定

項目 內容
端點 /k/v1/app/status.json
方法 GET
必要參數 app(應用程式 ID)

呼叫此 API 後,會回傳該應用程式目前的流程管理設定,包含是否啟用流程管理(enable)、各狀態的定義(states)、可執行的動作(actions)、以及目前的修訂版本號(revision)。

官方文件:取得流程管理設定 – cybozu developer network

變更流程管理設定

項目 內容
端點 /k/v1/preview/app/status.json
方法 PUT
必要參數 app(應用程式 ID)、enablestatesactions

此 API 用於更新應用程式的流程管理設定。

請注意,呼叫後設定會先進入預覽preview)狀態,需要另外進行「應用程式部署」才會正式生效。

官方文件:變更流程管理設定 – cybozu developer network

什麼是「Bookmarklet」

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 時,需要注意以下幾點:

  • 權限需求:呼叫「取得流程管理設定」及「變更流程管理設定」API,執行者必須具備該應用程式的應用程式管理員權限。若權限不足,API 呼叫將會回傳錯誤。
  • 匯入失敗的常見原因:匯入流程管理設定時,若 JSON 資料中缺少必要欄位、參數格式有誤,或是流程中指定的欄位代碼在目標應用程式中不存在,都可能導致匯入失敗。建議在匯入前,先確認來源與目標應用程式的欄位結構是否相符。
  • 部署步驟不可省略:匯入後設定僅處於預覽狀態,必須在應用程式管理頁面手動執行更新(或是搭配應用程式部署的 API 操作),才會正式套用至應用程式。

結語

本文介紹了如何透過 kintone REST API 搭配 Bookmarklet,快速實現流程管理設定的匯出與匯入。雖然 kintone 本身目前尚未內建此功能,但善用 API 就能輕鬆解決需要在多個應用程式間複製流程、或是想要備份設定的需求。

Bookmarklet 的好處在於不需要額外建置環境,只要一次設定好書籤,就能在 kintone 頁面上一鍵執行。這次介紹的是流程匯出與匯入,但 Bookmarklet 本身的應用不僅於此,也可以依照自己的需求撰寫其他功能。如果你也有類似的需求,歡迎試試看!


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言