若因某些情況導致公式未在資料建立時就觸發,而你希望在資料儲存後自動重算公式,可以考慮利用程式,在資料儲存完成後自動執行公式重算。
步驟一:打開 Javascript 工作流程編輯器
從上方頁籤列中找到你要增加此段程式碼的表單,點擊表單名稱旁的三角形符號,並選擇 Javascript工作流程。
步驟二:切換至 Post-workflow
步驟三:將以下程式碼複製貼上並調整後儲存
var nodeId = param.getNewNodeId(Key Field); var path = '/tab_path/sheet_path'; var query = db.getAPIQuery(path); var entry = query.getAPIEntry(nodeId); entry.recalculateAllFormulas(); entry.setIfDoLnls(true); entry.setCreateHistory(true); entry.save();
調整方式:
1. 將 Key Field 填入表單的 Key Field ID,此資訊可以從 Javascript 工作流程編輯器(選擇 Pre-workflow 時的頁面)中找到,或是從資料庫定義文件查詢。
以上圖表單範例來說,這一行程式碼應寫為:
var nodeId = param.getNewNodeId(3000841);
2. 將 '/tab_path/sheet_path' 改成這份表單的頁籤及表單路徑。
如果你的表單網址為 www.ragic.com/sample/sales/3?PAGEID=wSM (忽略 ?PAGEID=wSM 的部分),將這一行程式寫為:
var path = '/sales/3';
3. 如果只想要重算指定的欄位公式,而非全部欄位的公式的話,則可以把這一行程式碼
entry.recalculateAllFormulas();
改成
entry.recalculateFormula(field id);
例如:只針對某三個欄位(欄位 ID: 1000001、1000002、1000003)進行公式重算,將要重算的欄位 ID 填入 field id 中,一個欄位為一行, 所以要重算三個欄位的公式則會寫成三行:
entry.recalculateFormula(1000001); entry.recalculateFormula(1000002); entry.recalculateFormula(1000003);