常見問題
遇到問題了嗎?不用擔心,答案都在這。
全站搜尋

如何記錄特定欄位的最後資料修改日期?

Ragic 提供了預設值功能協助您紀錄整筆資料的修改日期

如果您只需要紀錄單一欄位的最後修改日期,則可以利用程式幫助你達成需求

請依如下步驟設定:

步驟一: 打開 JavaScript 工作流程編輯器

在任一表單名稱上按下右鍵,並選擇「 JavaScript 工作流程」:

步驟二:切換至 Global Workflow

步驟三:將以下程式碼複製貼上並儲存

獨立欄位 :

function setLastModifiedOnField(pathSheet, observeField, recordField) {
    if ((param.isCreateNew() == false && param.getOldValue(observeField) !== param.getNewValue(observeField)) || (param.isCreateNew() && param.getNewValue(observeField) !== null)) {
        var today = new Date(new Date().getTime() + account.getTimeZoneOffset());
        function pad2(n) { return n < 10 ? '0' + n : n }
        var fmtValue = today.getFullYear() + "/" +
            pad2(today.getMonth() + 1) + "/" +
            pad2(today.getDate()) + " " +
            pad2(today.getHours()) + ":" +
            pad2(today.getMinutes()) + ":" +
            pad2(today.getSeconds());
        
        var query = db.getAPIQuery(pathSheet);
    	query.addFetchDomains(recordField);
        var entry = query.getAPIEntry(response.getRootNodeId());
        entry.setFieldValue(recordField, fmtValue);
        entry.save();
    }
}

子表格欄位 :

function setLastModifiedOnSubtableField(pathSheet,observeSubtableKeyField, observeSubtableField, recordField) {
    var list = param.getSubtableEntry(observeSubtableKeyField);
    var entry = param.getUpdatedEntry();
    var today = new Date(new Date().getTime() + account.getTimeZoneOffset());
    function pad2(n) { return n < 10 ? '0' + n : n }
    var fmtValue = today.getFullYear() + "/" +
        pad2(today.getMonth() + 1) + "/" +
        pad2(today.getDate()) + " " +
        pad2(today.getHours()) + ":" +
        pad2(today.getMinutes()) + ":" +
        pad2(today.getSeconds());
    for (var i = 0; i < list.length; i++) {
      if(list[i].getOldValue(observeSubtableField) != list[i].getNewValue(observeSubtableField) && (list[i].getOldValue(observeSubtableField) !== null || list[i].getNewValue(observeSubtableField) !== "" )){
          var subRootNodeId = list[i].getSubRootNodeId();
          entry.setSubtableFieldValue(recordField, subRootNodeId, fmtValue);
          entry.save();
      }
    }
}

步驟四:切換至欄位所在的表單的 "Post-workflow"

Post-workflow

若表單路徑為

https://www.ragic.com/accountname/tabname/1

獨立欄位 :

那麼請在此處填上:

setLastModifiedOnField("/tabname/1", 特定欄位ID, 紀錄日期欄位ID);

查詢欄位ID的方法請看這邊

*此做法在新增一筆資料時,如果特定欄位為空值,儲存後一樣會在記錄日期欄位產生修改日期,如果希望只在修改時才觸發,可以在Post-workflow將上述的程式調整為以下:

if(param.getOldValue(特定欄位ID) !== null || param.getNewValue(特定欄位ID) !== "" ){
       setLastModifiedOnField("/tabname/1",  特定欄位ID,  紀錄日期欄位ID);
}

子表格欄位 :

請在此處填上:

setLastModifiedOnSubtableField("/tabname/1", 子表格KeyField, 特定欄位ID, 紀錄日期欄位ID);

子表格KeyField可以在資料庫欄位定義文件中找到,以下為示意圖:

完成編輯後請務必儲存再離開。

紀錄的時間根據「帳號設定」中的時區調整。

*如果儲存時出現類似:TypeError: null has no such function "addFetchDomains" in at line number 25的錯誤的話,代表"/tabname/1"可能錯了,可以檢查看看這邊有沒有寫錯。

回最上面

    馬上註冊
    免費試用 Ragic!

    用 Google 帳號註冊

    立即科技 Ragic, Inc.
    02-7728-8692
    info@ragic.com
    台北市中正區南昌路二段81號9樓