在 kintone 中,經常會有讓多個應用程式互相連動以管理資料的情況,但應用程式之間的資料同步,卻是難以免寫程式實現的課題。
例如「在『訂單管理應用程式』更新記錄後,希望『庫存管理應用程式』的庫存數也自動減少」「當『專案管理應用程式』的狀態改變時,希望『任務管理應用程式』的相關任務也一併更新」,這類需求相當常見。
僅靠 kintone 的標準功能無法實現這樣的自動連動,過去必須撰寫 JavaScript 自訂功能或使用外部工具。
使用本外掛,即可免寫程式地設定這類應用程式間的資料連動。
外掛提供的功能
應用程式間的自動資料連動
sequenceDiagram
participant U as 使用者
participant S as 來源應用程式
participant P as 外掛
participant D as 連動目標應用程式
U->>S: 建立/更新記錄
S->>P: 觸發事件
P->>P: 評估執行條件
alt 符合條件
P->>D: 以鍵值欄位搜尋
alt 記錄存在
P->>D: 依欄位綁定進行更新
else 記錄不存在
alt 自動建立選項開啟
P->>D: 建立新記錄
end
end
P->>U: 顯示結果對話框
else 不符合條件
P->>P: 略過
end
當 kintone 的記錄執行以下操作時,外掛會依照設定自動更新連動目標應用程式的記錄。
- 記錄建立時
- 記錄更新時(詳細畫面、清單畫面的行內編輯)
這些觸發事件可依每組設定個別選擇,因此能進行「只在建立時連動」這類細部控制。
5 種欄位綁定方式
寫入連動目標欄位的值來源,可從以下 5 種方式中選擇。
| 類型 | 說明 | 範例 |
|---|---|---|
| 欄位複製 | 直接複製來源應用程式的欄位值 | 客戶名稱 → 連動目標的 往來對象名稱 |
| 固定值 | 永遠設定為相同的值 | "待確認" → 連動目標的 狀態 |
| 字串合併 | 組合多個欄位的值成為一個字串 | {{fieldCode:姓}} {{fieldCode:名}} → 田中 太郎 |
| 計算式 | 設定以四則運算計算後的結果 | {{fieldCode:單價}} * {{fieldCode:數量}} * 1.1 → 含稅合計 |
| 日期位移 | 將日期、日期時間欄位的值加上或減去指定的天數、月數或年數後設定 | 交期 + 7 天 → 連動目標的 提醒日 |
進行欄位複製時,即使來源欄位與連動目標欄位的型別不同,外掛也會自動進行型別轉換。例如可以將文字欄位的值複製到數值欄位。
與流程管理的連動
若要在執行流程管理的動作時進行連動,還可以進行更細緻的篩選。
- 以動作名稱篩選:只在特定動作(例如「核准」)時執行
- 以狀態名稱篩選:只在轉換至特定狀態(例如「已核准」)時執行
如此一來,即可實現「只有在核准時才於請款應用程式建立記錄」這類複雜的工作流程連動。
彈性的執行條件設定
您可以依欄位的值細緻設定執行連動的條件。
多個條件也可以用 AND 組合,例如可設定為「只有當優先度為『高』且狀態為『處理中』時才連動」。
若未設定條件,則只要目標觸發事件發生,就會無條件執行連動。
記錄不存在時自動建立
您可以選擇當連動目標應用程式找不到鍵值欄位相符的記錄時的行為。
開啟「當連動目標不存在記錄時建立記錄」選項後,外掛就會在連動目標應用程式自動建立新記錄。如此一來,即可實現「在來源應用程式首次建立記錄時,連動目標應用程式的記錄也同時被建立」這樣的用法。
刪除關聯記錄
當以刪除事件作為觸發時,本外掛提供一併刪除連動目標對應記錄的選項。
開啟「符合條件時刪除連動目標的對象記錄」後,所有鍵值欄位相符的連動目標記錄都會被刪除。
啟用此選項後,連動目標應用程式的記錄將被完全刪除,且沒有任何方式可以還原已刪除的記錄。設定前請務必充分確認其行為。
以對話框顯示處理結果
在設定中開啟「以對話框顯示更新結果」後,連動處理完成後即可透過對話框確認結果。
- ✓(綠色):已正常更新的設定
- –(灰色):因不符合執行條件而被略過的設定
- ✗(紅色):發生錯誤的設定
即使處理橫跨多組設定,也會清楚顯示各自的結果。
適合使用本外掛的情境
想自動連動訂單、庫存與請款時
在訂單應用程式建立記錄時,自動減少庫存管理應用程式的庫存數,或在請款管理應用程式自動建立請款記錄,這類複合式連動只用一個外掛就能實現。
想將狀態變更反映至其他應用程式時
最適合用於「當專案管理應用程式的流程變為『已核准』時,一次更新多個相關任務管理應用程式記錄的狀態」這類用法。
想將主資料的變更傳遞至子應用程式時
當往來對象主檔應用程式的負責人變更時,自動更新該往來對象底下其他應用程式記錄的負責人欄位,在主資料管理的情境中相當實用。
需要資料正規化與轉換時
運用字串合併與計算式,即可將連動來源多個欄位組合後的值,設定至連動目標的單一欄位。既能避免人工轉錄的錯誤,也能維持資料的一致性。
設定步驟
1. 選擇連動目標應用程式
從「連動目標應用程式」的下拉式選單中,選擇要更新的應用程式。
您也可以與來賓空間內的應用程式連動。選擇應用程式後,外掛會自動判斷其是否為來賓空間。
2. 設定作為鍵值的欄位
在兩個應用程式中分別選擇用來連結來源應用程式與連動目標應用程式的鍵值欄位。
外掛會從連動目標應用程式搜尋與來源應用程式鍵值欄位值相符的記錄,並將該記錄作為更新對象。
3. 選擇觸發事件
選擇要在什麼時機執行連動。
- 記錄建立時:記錄被新建時
- 記錄更新時:記錄被編輯並儲存時
4. 設定欄位綁定
逐行設定要在連動目標的哪個欄位寫入什麼樣的值。
從「欄位複製」「固定值」「字串合併」「計算式」「日期位移」中選擇綁定類型,並搭配連動目標欄位進行設定。
若選擇「日期位移」,請指定作為基準的日期、日期時間欄位、單位(日、月、年),以及要進行加法或減法。
5. 設定執行條件(選填)
若您只想在符合特定條件的記錄上執行連動,請設定執行條件。
只有在所有條件都滿足時才會執行連動(AND 結合)。
6. 設定選項
請依需求設定以下選項。
- 當連動目標不存在記錄時建立記錄:找不到鍵值欄位相符的記錄時自動建立
- 符合條件時刪除連動目標的對象記錄:對連動目標的記錄執行刪除而非更新
- 以對話框顯示更新結果:處理完成後顯示可確認結果的對話框
7. 儲存設定並確認運作
儲存設定後,請實際操作記錄,確認連動是否正確運作。
事先開啟「以對話框顯示更新結果」,能讓首次的運作確認更加順利。
安全的計算式引擎
計算式綁定所使用的計算引擎,是以不依賴 eval 或 Function 的自有遞迴下降剖析器實作而成。
因此即使在啟用內容安全政策(CSP)的環境中也能安全運作,不會有執行任意程式碼的安全風險。
支援的運算:+(加法)、-(減法)、*(乘法)、/(除法)、()(括號)、單元負號
// 式子範例
{{fieldCode:單價}} * {{fieldCode:數量}} * 1.1
({{fieldCode:金額A}} + {{fieldCode:金額B}}) / 2
-{{fieldCode:調整額}} + {{fieldCode:合計}}
在設定畫面輸入計算式時,系統會即時驗證式子是否有效,讓您在儲存前就能確認無效的式子。
注意事項
「分類」「群組」「關聯記錄清單」「表格」無法作為鍵值欄位使用。這是因為依 kintone 的規格,這些欄位型別不在搜尋查詢的對象範圍內。
若連動目標應用程式中存在大量鍵值欄位相符的記錄,處理可能會耗費較長時間。建議您善用連動目標的搜尋條件(dstQuery)以縮小對象範圍。
聯絡我們
若您發現外掛的問題,或有新增功能的需求,歡迎透過畫面上方的導覽列與我們聯繫。
外掛的原始碼
本外掛為開源專案。 原始碼公開於 GitHub,任何人都能自由查閱。
若您對詳細的實作內容或架構有興趣,請透過本頁上方的「查看原始碼」按鈕前往儲存庫。
常見問題
-
可以同時連動到多個應用程式嗎?
可以。只要新增多組外掛設定,即可在單次記錄操作中同時更新多個應用程式。
-
若連動目標不存在記錄會如何處理?
預設不會進行任何處理。開啟「當連動目標不存在記錄時建立記錄」選項後,即會自動建立新記錄。
-
可以與來賓空間的應用程式連動嗎?
可以。選擇連動目標應用程式時,也能選擇來賓空間內的應用程式。外掛會自動判斷是否為來賓空間,並使用適當的 API。
-
可以只在流程管理的特定動作時連動嗎?
可以。當觸發事件選擇「流程變更時」,即可個別設定目標動作名稱與變更後的狀態名稱。若留空則所有動作與狀態皆為對象。
-
計算式可以進行哪些運算?
支援加法(+)、減法(-)、乘法(*)、除法(/),以及使用括號控制運算順序。欄位代碼可以「{{fieldCode:欄位代碼}}」的格式嵌入式子中。
-
使用 CSV 匯入或其他外掛進行批次更新時,也會執行連動嗎?
不會。kintone 的外掛是依據 kintone 所提供的「事件」運作。記錄儲存時雖有對應的事件,但對於 CSV 匯入或其他外掛進行的批次更新,外掛無法偵測到這些事件的發生。這並非本外掛的限制,而是 kintone 本身規格上的約束。
發布紀錄
實作日期位移綁定(dateOffset)
實作計算式綁定(calc)
實作字串合併綁定(concat)
實作固定值綁定(fixed)
支援個別指定觸發事件
支援以欄位條件設定執行條件的新式設定形式
新增以對話框顯示更新結果的功能
新增當連動目標不存在記錄時建立記錄的選項
首次發布