FAQ
なんか問題がある?心配しないで、答えは全部ここにいる。
全サイト検索

エントリー内の特定フィールドの最終更新日時の生成

Ragicでは、デフォルト値を設定することで、日付フィールドにレコードの最終更新日時を自動入力できます。ただし、特定のフィールドに最終更新日時を自動入力したい場合は、スクリプトを追加する必要があります。

スクリプトの追加方法については、こちらのガイドをご参照ください。

手順1: Ragicのワークフロー編集ページを開く

シート名を右クリックして「Javascriptワークフロー」を選択するか、タブを右クリックして「Global Javascriptワークフロー」を選択します。

手順2: 「Global ワークフロー」編集ページに切り替える

手順3: 以下のコードを貼り付けて保存する

独立フィールド

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();
}
}
}

手順4: 編集ページを対象のシートの「ポストワークフロー」に切り替える

シート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); 
}

手順5: ポストワークフローを保存

終了する前に変更を保存することをお忘れなく。

保存時にTypeError: null has no such function "addFetchDomains" in at line number 25 のようなエラーが発生した場合は、/タブ名/1が正しいかどうか確認してください。

備考:更新日時は、会社設定会社の現地時間帯に基づいて記録されます。

    無料でRagicを始める

    Googleアカウントに登録

    Ragic 株式会社
    1-888-666-8037
    info@ragic.com
    利用規約 | プライバシーポリシー