見出し画像

kintoneちょいカスタマイズ : レコード再利用時の日付フィールドを今日に変更する

はじめに

今回は、kintoneアプリで、レコードの再利用時にコピーされる日付フィールドを、今日に修正する、というちょっとしたJavaScriptカスタマイズ、「ちょいカスタマイズ」していきます。

レコードの再利用

kintoneのアプリにすでに登録済みのレコードをコピーして、新しいレコードを作成できるのが、「レコードを再利用」する機能です。
フィールド情報を再入力する必要がなく、便利なので、ご使用の方も多いと思います。

フィールドの属性により、コピーされないフィールドもありますが、ほとんどのフィールドをコピーすることが可能です。
ただ、フィールドによってはコピーされた値の入力し直しが発生したり、入力し直さないことにより支障が出ることもあります。

この「レコードの再利用」を選択されたときに、前のレコードから値をコピーしない、というjavascriptカスタマイズを行っていきます。

なお、kintone JavaScriptカスタマイズについては、下記記事ご参照ください。

https://developer.cybozu.io/hc/ja/articles/360025631172

使用するアプリ

使用するのは、
kintoneアプリ:活動履歴(営業支援パック)
です。

今回は、
・対応日時は、再利用を選択した日に設定する
というカスタマイズをします。

アプリの準備

1. 「アプリを作成する」を選択します。
2. 「kintoneアプリストア」から「おすすめのアプリ」の中にある「営業支援パック」をクリックします。

画像1

3.①「このアプリパックを追加」をクリックします。この時、②「サンプルデータを含める」のチェックは付けたままにします。

画像2

4.「アプリパックの追加」画面にて、「追加」をクリックします。

画像3

追加すると、アプリが3つ追加されたことを確認することができます。

画像4

修正前の動作

アプリの一覧画面より、コピー元となるレコードの行の「レコード詳細を表示する」ボタンをクリックします。

画像5

コピー元となるレコード詳細画面で、②「レコードを再利用する」をクリックします。

画像6

コピー元となるレコードがコピーされた、新しいレコードが表示されます。下記のように、「対応日時」フィールドは、再利用したレコードの値が設定されています。

画像7

JavaScriptのコード

全体のコードは下記です。

(function() {
 'use strict';
 kintone.events.on('app.record.create.show', function(event) {
   const record = event.record;
   if ( event.reuse === true ){
     const d = new Date();
     const formatDate = (d) => {
       const formatd = d.getFullYear() + "-" + String(d.getMonth() + 1).padStart(2,'0') + "-" + d.getDate();
       return formatd;
     }
     record['対応日時']['value'] = formatDate(d);
   }
   return event;
 });
})();

実装の詳細内容です。

kintone.events.on('app.record.create.show', function(event) {

レコード追加画面の表示後イベントを受信した際に、処理を実行するよう記述します。

https://developer.cybozu.io/hc/ja/articles/201941984-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E8%BF%BD%E5%8A%A0%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88

引数のeventオブジェクトの
reuse…再利用時には、trueが設定
record…レコードオブジェクト
を参照、設定します。

再利用の場合のみ、下記の処理を実行します。

     const d = new Date();
     const formatDate = (d) => {
       const formatd = d.getFullYear() + "-" + String(d.getMonth() + 1).padStart(2,'0') + "-" + d.getDate();
       return formatd;
     }
     record['対応日時']['value'] = formatDate(d);

今日の日付を取得し、日付を'YYYY-MM-DD'形式の文字列にフォーマットします。フォーマットした文字列を、「対応日時」フィールドに値として設定します。

処理の最後で、設定したrecordオブジェクトを含むeventオブジェクトを戻します。

    return event;

修正後の動作

コピー元となるレコード詳細画面で、②「レコードを再利用する」をクリックします。

画像6

コピー元となるレコードがコピーされた、新しいレコードが表示されます。「対応日時」フィールドは、再利用した日付が設定されるように変更されていることが確認できました。

画像9

まとめ

今回は、kintoneアプリで、レコードの再利用時にコピーされる日付フィールドを、今日に修正するという、JavaScriptカスタマイズを実装しました。
他にも、
・フィールドの値をクリアにしたい
・フィールドの値を決まった値を設定したい
など、用途に合わせて対応できます。

いいなと思ったら応援しよう!