【kintone】JavaScriptの書き方(レコード再利用の判定)【カスタマイズ基礎編】

前回の記事ではkintoneのエラー処理について解説しました。

続いて、kintoneにおけるJavaScriptカスタマイズでは「レコード再利用の判定」を行うことができます。

この記事ではレコード再利用の判定方法について解説します。

この記事で何が分かる?
  • kintoneのJavaScriptカスタマイズでは、レコード再利用の判定を行うことができます。
  • 「event.reuse」の値で再利用かどうかを判定できます。
  • event.reuseの値がfalseの場合は追加ボタンから開いたまっさらな状態です。
  • event.reuseの値がtrueの場合は再利用ボタンから開いた値を引き継いだ状態です。
目次

kintoneのレコード再利用とは

kintoneにはレコードの再利用の機能があります。

今開いているレコードの情報をコピーして新規登録できます。

情報を引き継ぎつつ、一部のフィールドだけ変更して登録したい場合は非常に便利な機能です。

レコード追加時のイベントは「app.record.create.show」で定義します。

ここで注意点が、レコードをまっさらな状態から登録する場合も再利用から登録する場合も同じイベントになるということです。

そのため、この「app.record.create.show」内で初期値定義をしていた場合、再利用で登録する場合も、その初期値で上書きされてしまいます。

せっかく再利用で情報を引き継いだにも関わらず、値がリセットされては再利用の意味がなくなりますね。

そこで必要になるのが再利用の判定です。

レコード再利用を判定する

今開いた画面が「追加ボタンから開いたのか」「再利用ボタンから開いたのか」を判定する場合は「event.reuse」の値を使います。

event.reuseの値がfalseの場合は追加ボタンから開いたまっさらな状態

event.reuseの値がtrueの場合は再利用ボタンから開いた値を引き継いだ状態

(() => {

	'use strict';

	kintone.events.on('app.record.create.show', event => {

		const record = event.record;

		// 再利用時でない場合(追加ボタン押下時)は期限を開始日の3日後に設定
		if (!event.reuse) {
			const date = new Date(record.開始日.value);
			date.setDate(date.getDate() + 3);	// 開始日の3日後
			record.期限.value = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + date.getDate()).slice(-2);
		}

		return event;

	});

})();

上記コードでは、追加ボタンから開いた場合は今日の日付が開始日フィールドに入り、その3日後の日付が期限フィールドに入る場合を想定します。

再利用時は元のレコードの情報を引き継ぎたいので、開始日も期限も初期化しません。

この記事のまとめ
  • kintoneのJavaScriptカスタマイズでは、レコード再利用の判定を行うことができます。
  • 「event.reuse」の値で再利用かどうかを判定できます。
  • event.reuseの値がfalseの場合は追加ボタンから開いたまっさらな状態です。
  • event.reuseの値がtrueの場合は再利用ボタンから開いた値を引き継いだ状態です。

再利用時の処理を分けたい場合のみ、event.reuseで判定すれば良いですね。

同じapp.record.create.showイベント内で完結できるので、共通処理は一回だけ記述すれば良く、コードの冗長化を防げます。

次回の記事ではプロセス管理アクションについて解説します。

目次