FAQ
¿Tienes dudas? No te preocupes, aquí encontrarás las soluciones.
Búsqueda Completa en el Sitio

    レコード内の特定フィールドの最終更新日時を生成する方法

    Ragic では、デフォルト値を設定することで、レコードの最終更新日時を Date フィールドに自動入力できます。

    ただし、レコード内の特定のフィールドの最終更新日時を自動入力したい場合は、スクリプトを追加する必要があります。

    以下の手順に従ってスクリプトを追加してください。

    ステップ 1:Ragic ワークフローエディターを開く

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

    ステップ 2:「Global Workflow」の編集画面に切り替える

    ステップ 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/データベースアカウント名/タブ名/1?PAGEID=wSM

    の場合(?PAGEID=wSM の部分は無視してください)、以下のように設定します。

    独立フィールドの場合:

    ポストワークフロー に次のコードを追加してください。

    setLastModifiedOnField("/タブ名/1", 特定のフィールド番号, 記録の日付フィールド番号);

    フィールド番号(Field ID)の確認方法については、こちらの記事をご参照ください。

    「受注書」を例にすると、以下の画像と表のとおりです。

    フィールド フィールド名 フィールド番号
    特定のフィールド 状態 1000002
    記録の日付フィールド 状態更新日 1002217

    対応する Field ID を入力した後のコードは次のようになります。

    setLastModifiedOnField("/タブ名/1", 1000002, 1002217);

    新規レコード作成時、特定フィールドが空でも、保存後にレコード日時フィールドへ最終更新日時が入力されます。更新時のみ動作させたい場合は、次のようにコードを調整してください。

    if(param.getOldNodeId(Specific Field ID) !== -1 || param.getNewValue(Specific Field ID)){
        setLastModifiedOnField("/タブ名/1", 特定のフィールド番号, 記録の日付フィールド番号);
    }
    

    子テーブルフィールドの場合:

    ポストワークフロー に次のコードを追加してください。

    setLastModifiedOnSubtableField("/タブ名/1", 子テーブルキーフィールド, 特定のフィールド番号, 記録の日付フィールド番号);

    備考: 「記録の日付フィールド」として選択できるのは、子テーブルフィールドのみです。

    子テーブルのキーフィールドは、データベースの定義ファイルをダウンロードして確認できます。以下の例では、子テーブルのキーフィールド1000020 です。

    たとえば、上記画像の例では以下のとおりです。

    フィールド フィールド名 フィールド番号
    特定のフィールド 状態 1002218
    記録の日付フィールド 状態更新日 1002219

    対応する子テーブルのキーフィールドフィールド番号 を入力した後のコードは次のようになります。

    setLastModifiedOnSubtableField("/タブ名/1", 1000020, 1002218, 1002219);

    新規レコード作成時に、特定フィールドが空でも、保存後にレコード日時フィールドへ最終更新日時が入力されることがあります。更新時のみ動作させたい場合は、コードを次のように調整してください。

    var paramList = param.getSubtableEntry(子テーブルキーフィールド);
    var list = paramList.toArray();
    for(var i = 0; i < list.length; i ++) {
        if(paramList[i].getOldNodeId(特定のフィールド番号) !== -1 param.getNewValue(特定のフィールド番号) !== ""){ 
            setLastModifiedOnSubtableField("/タブ名/1" , 子テーブルキーフィールド, 特定のフィールド番号, 記録の日付フィールド番号); 
        }
    }
    

    ステップ 5:ポストワークフローを保存する

    終了する前に、変更内容を忘れずに保存してください。


    備考:

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

    2. 更新日時は、会社設定で設定されている会社のローカルタイムゾーンに基づいて記録されます。

    Comparte tu opinión con Ragic

    ¿Qué te gustaría comentarnos?(obligatorio, selección múltiple)

    Proporcione explicaciones detalladas para los elementos seleccionados anteriormente:

    Capturas de pantalla para ayudarnos a comprender mejor tus comentarios:

    ¡Gracias por sus valiosos comentarios!

    Iniciar Ragic Gratis

    Registrarse con Google

    Términos de Servicio | Política de Privacidad