Ribbit works
記事のトップ画像

【Kintone】フィールドの入力制限・可否を変更する

KintoneJavaScript

last modified date2021-12-5

publish date2021-9-2

今回はkintoneにおける、アプリの各フィールドの入力可否を操作する方法を解説します。

kintone独自の仕様なので、必要な時に忘れないよう備忘として書いておきます。

また、ルックアップと関連付けたフィールドは入力不可になりますが、今回紹介する方法で手入力可能にできます。

ですが、再度ルックアップを取得したタイミングや、データの取り込みを行ったタイミングで手入力部分は消えてしまうため、その点は注意してください。

ソースコード

kintone.events.onのコールバック関数内で実行する場合

kintone.events.on("...", (event) => {
  event.record["フィールドID"].disabled = false;

  return event;
});

予め設置したボタンのクリック時など、独自のタイミングで実行する場合

/** 実行時のレコード情報 */
const { record } = kintone.app.record.get();

// フィールドの入力可否を設定
record["フィールドID"].disabled = false;

// レコード情報をセット
kintone.app.record.set({ record });

上記のコードで実装可能です。

注意点

注意する点としては、最終行のレコード情報をセットしないと設定が反映されないというところです。

kintone.events.onのコールバック関数では、return eventの部分。 ボタンクリック時では、kintone.app.record.set({ record });の部分がないと、正しく反映されません。

また、kintoneでjavascriptカスタマイズを長くされている方であればわかると思いますが、kintone.app.record.getで取得できるオブジェクトの直下に各フィールドプロパティがあるのではなく、取得したオブジェクトにrecordプロパティがあり、その中に各フィールドプロパティがあります。 そして、kintone.app.record.setの引数にするオブジェクトは、kintone.app.record.getで取得したオブジェクトの構造でなければなりません。

// レコード情報を取得
const { record } = kintone.app.record.get();

// フィールドの入力可否を設定
record['フィールドID'].disabled = false;

// レコード情報をセット
kintone.app.record.set(record); // これはエラー
kintone.app.record.set({ record }); // これはOK

また、eventから取得できるrecordオブジェクトをそのままセットしたい場合は、オブジェクトの構造を少し操作しておく必要があります。

const events = [
	'app.record.create.show',
	'app.record.edit.show'
];

// 処理をイベントに登録します
kintone.events.on(events, event => {

	// このオブジェクトはそのままセットできない
	const record = event.record;

	// オブジェクトを整形した後セット
	kintone.app.record.set({ record });
});