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

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

    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 にフィードバックを送る

    ご意見をお聞かせください(必須・複数選択可)

    上記の項目について、詳細をご記入ください:

    フィードバック理解のため、スクリーンショットをご提供ください:

    貴重なご意見をありがとうございます!

    無料でRagicを始める

    Googleアカウントに登録

    北京立即科技有限公司
    京ICP备2022003680号
    利用規約 | プライバシーポリシー