LoginSignup
5
2

More than 5 years have passed since last update.

kintone アプリで、日付を入力して、別フィールドに値を自動入力させてみた

Posted at

0.はじめに

kintone アプリで、

日付を入力したら自動で別フィールドに値を入力する様にしたいな、

と思い、やってみました。

1.JavaScript ファイルをアップロードする

  1. まず、アプリの設定画面を開き、「設定」タブの「JavaScript / CSSでカスタマイズ」リンクをクリックします。

    • 0001.png  
  2. 「JavaScript / CSSでカスタマイズ」画面が開くので、「PC用のJavaScriptファイル」の「アップロードして追加」ボタンを押下し、以下の JavaScript ファイルをアップロードします。

    • 0002.png
    diffYYYYMM.js
    /*
    * 指定年月からの経過年月算出プログラム
    */
    (function () {
    // レコード追加、編集前、変更で処理を実行する
    var events = ['app.record.create.show','app.record.edit.show','app.record.index.edit.show',
                   'app.record.edit.change.計上月','app.record.create.change.計上月','app.record.index.edit.change.計上月'];
    kintone.events.on(events, function(event) {
        var record = event.record;
        // 基準月
        var baseYYYY = 2005;
        var baseMM = 7;
        console.log("baseYYYY: " + baseYYYY);
        console.log("baseMM: " + baseMM);
        // 計上月
        var tgtYYYYMMDD = record['計上月']['value'];
        console.log("tgtYYYYMMDD: " + tgtYYYYMMDD);
        var tgtYYYY = Number(tgtYYYYMMDD.substr(0,4));
        var tgtMM = Number(tgtYYYYMMDD.substr(5,2));
        console.log("tgtYYYY: " + tgtYYYY);
        console.log("tgtMM: " + tgtMM);
        // 月差分
        var difMM = tgtMM - baseMM
        if (difMM < 0) {
            difMM += 12;
            tgtYYYY -= 1;
        }
        // 年差分
        var difYYYY = tgtYYYY - baseYYYY;
        console.log("difMM: " + difMM);
        console.log("difYYYY: " + difYYYY);
        // 年
        if (difYYYY > 0) {
            record['']['value'] = difYYYY + 1
        } else {
            record['']['value'] = 0
        }
        // 月
        record['']['value'] = tgtMM
    
        return event;
    });
    })();
    

2.アプリのフォームにフィールドを設定する

  1. 「フォーム」タブを選択します。

    • 0003.png

  2. 所定のフィールドを追加します。

    • 0004.png

    • 0005.png  
  3. 入力する日付フィールドを設定します。
     
    ここでは、「計上月」という名称を使っています。
    フィールドコードの値を「計上月」と設定して下さい。
     
    JavaScript ファイルの以下の部分と関係しているので、「計上月」という名称を変更したい場合は、そちらも合わせて変更しておいて下さい。

    // レコード追加、編集前、変更で処理を実行する
    var events = ['app.record.create.show','app.record.edit.show','app.record.index.edit.show',
               'app.record.edit.change.計上月','app.record.create.change.計上月','app.record.index.edit.change.計上月'];
    
    // 計上月
    var tgtYYYYMMDD = record['計上月']['value'];
    


  4. 自動出力する数値フィールドを設定します。
     
    ここでは、「期」「月」という名称を使っています。
    フィールドコードの値を「期」「月」と設定して下さい。
     
    JavaScript ファイルの以下の部分と関係しているので、「期」「月」という名称を変更したい場合は、そちらも合わせて変更しておいて下さい。不要な場合は、削除して下さい。

    • 「期」
    // 年
    if (difYYYY > 0) {
        record['']['value'] = difYYYY + 1
    } else {
        record['']['value'] = 0
    }
    

     
    * 「月」

    // 月
    record['']['value'] = tgtMM
    

99.ハマりポイント

XX.まとめ

kintone を使っていると、

意外にこういう細かい機能が欲しくなります。

参考になれば♪

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2