kintone|「レコードを再利用する」日付フィールドを最新化
mykintoneをチョビットずつ便利に改善していく過程を投稿していきます。
2021年の4月から始めたことですが、
自分の色んなログをkintoneで作成した「キロク」アプリに登録しています。
📝キロクアプリ(↓のような構成です)
回数の他に時間を登録できるようにもしています。
登録するキロクによっては回数、時間といったように、予め別アプリ「ログタイトル」で登録している情報によって切替が可能です。「ログタイトル」に登録されている情報をキロク情報のルックアップにて取得しています。
📝今回の改善点について
毎日のように登録するため「レコードの再利用」機能を重宝しています。
一から登録しなおすより便利で、とても役立っています。
「レコードの再利用」を利用した場合、必ず修正しなければいけない項目が「日付」です。
何時のキロクなのかを判別するために利用する重要なフィールドです。
初期値としては、新規登録時の日付が設定されるようになっていますが、「レコードの再利用」を行った場合は、再利用元のレコード値に引きずられるために、日付フィールドの値は更新されません。
なので、毎回手作業で日付フィールドの日付を修正しています。
今回の改善点は、この「日付」フィールドを「レコードの再利用」以外の新規登録時と同様に、キロクを登録しようとした日付に自動で更新して欲しい。
📝改善対象
「レコードの再利用」は、PC・モバイルどちらも利用するため、改善対象はどちらも対象とします。
📝利用したライブラリ
dayjs|JavaScriptの中で日付を簡単に利用する目的で利用
📝改善策
サイボウズが用意してくれている「app.record.create.show」と「mobile.app.record.create.show」の新規登録画面表示時のイベントの中で、当日日付をdayjs経由で取得して、日付フィールドのフォーマットに変換した当日日付を設定する。
📝ソースコード
(function () {
"use strict";
// 日付クラス
const kintoneDate = class {
// 初期化
constructor(date) {
this.date = date;
}
// kintoneの日付フィールドのフォーマットに合わせて返す
getKintoneDateFormat() {
return this.date.format('YYYY-MM-DD');
}
};
// レコード追加画面が表示された後に発生するイベント
// app.record.create.show:レコードの新規登録画面を開いた時のイベント
// mobile.app.record.create.show:レコードの新規登録画面を開いた時のイベント(モバイル)
kintone.events.on(
[
"app.record.create.show",
"mobile.app.record.create.show",
],
(event) => {
try {
// 日付クラスに当日を引き渡す。
const today = new kintoneDate(dayjs());
// レコードを取得
const record = event.record;
// 日付フィールドにレコードを作成しようとしている日付を再設定する。
// kintoneの日付フィールドは「YYYY-MM-DD」のフォーマット
record['日付'].value = today.getKintoneDateFormat();
return event;
// 例外
} catch (e) {
console.log('エラー:',e.message);
// 必ず行う処理があれば
} finally {
}
}
)
})();
📝改善後・・・
私は4/21にマタイッコタベタイで「きんつばソフト」を食べているようです。実は本日も食べましたとすると、ルックアップする必要がなくなるため、このレコードを「レコードの再利用」して使いまわしたいです。
押します。
「日付」フィールドが正しく当日日付に変わってることが分かります。
これで「レコードの再利用」時にわざわざ「日付」フィールドの日付をカレンダーから再選択せずに済みそうです(スマホ版も同様に想定通りの動作を確認しました)。
例えば1日に10回「レコードの再利用」を利用して、レコードを作成している場合、「日付
」フィールドを押下する10回と押下することで表示されるカレンダーから当日を選択する10回の合計20回のタッチorクリック作業を略することができました!でかい!特にスマホからやる場合は操作が減って嬉しい!
📝最後に・・・
こうした方が良いのではというアドバイス等ありましたら、教えてください・・。
Discussion