Ragicでは、デフォルト値を設定することで、日付フィールドにレコードの最終更新日時を自動入力できます。ただし、特定のフィールドに最終更新日時を自動入力したい場合は、スクリプトを追加する必要があります。
スクリプトの追加方法については、こちらのガイドをご参照ください。
シート名を右クリックして「Javascriptワークフロー」を選択するか、タブを右クリックして「Global Javascriptワークフロー」を選択します。



独立フィールド
function setLastModifiedOnField(pathSheet, observeField, recordField) {
if (param.getOldValue(observeField) !== param.getNewValue(observeField) ||
param.isCreateNew()) {
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();
}
}
}

シートURLはhttps://www.ragic.com/accountname/tabname/1の場合
独立フィールド
ポストワークフローに以下のコードを追加する:
setLastModifiedOnField("/tabname/1", 特定のフィールドID, 日付記録フィールド ID);
フィールド IDを確認するには、この文章をご確認ください。
「受注書」を例にとって、以下の画像と表を参照してください:

| フィールド | フィールド名 | フィールド ID |
|---|---|---|
| 特定のフィールド | Status | 2000880 |
| 日付記録フィールド | Status Update Date | 1001110 |
対応するフィールドIDを記入した後のコード:
setLastModifiedOnField("/tabname/1", 2000880, 1001110);
新しいレコードを作成する際、特定のフィールドが空の場合、保存後もレコードの日付フィールドに最終更新日が生成されます。更新時にのみこれをトリガーするには、コードを以下のように調整する:
if(param.getOldNodeId(Specific Field ID) !== -1){
setLastModifiedOnField("/tabname/1", 特定のフィールド ID, 日付記録フィールド ID);
}
子テーブルフィールド
ポストワークフローに以下のコードを追加する:
setLastModifiedOnSubtableField("/tabname/1", 子テーブルキー値, 特定のフィールド ID, 日付記録フィールド ID);
備考: 「日付記録フィールド」として選択できるのは、子テーブルのフィールドのみです。
子テーブルキー フィールドはデータベースの定義ファイルで確認できます。
以下の例では、子テーブルキー フィールドは 2001138 となります。.

例えば、上の画像のように:
| フィールド | フィールド名 | フィールド ID |
|---|---|---|
| 特定のフィールド | Status | 1001111 |
| 日付記録フィールド | Update Date | 1001112 |
対応する子テーブルのキー・フィールドとフィールド ID を入力した後のコード:
setLastModifiedOnSubtableField("/tabname/1", 2001138, 1001111, 1001112);
新しいレコードを作成する際、特定のフィールドが空の場合、保存後もレコードの日付フィールドに最終更新日が生成されます。更新時にのみこれをトリガーするには、コードを以下のように調整する:
var paramList = param.getSubtableEntry(Subtable Key Field);
var list = paramList.toArray();
for(var i = 0; i < list.length; i ++) {
if(paramlist[i].getoldnodeid(Specific Field ID) !== -1){
setlastmodifiedonsubtablefield( tabname 1, Subtable Key Field, Specific Field ID, Record Date Field ID);
}
終了する前に変更を保存することをお忘れなく。
保存時にTypeError: null has no such function "addFetchDomains" in at line number 25 のようなエラーが発生した場合は、/タブ名/1が正しいかどうか確認してください。
備考:更新日時は、会社設定の会社の現地時間帯に基づいて記録されます。