サンプル集 - app.record.edit.show
にメンテナンス済み
kintone のレコード編集画面で「入力可否を切り替えたい」「他のフィールドの値から自動計算したい」「ボタンで値をコピーしたい」といった要望は、app.record.edit.show イベントで実現できます。
この記事では、レコード編集時によく使う 3 つの実装例をサンプルコードで紹介します。
app.record.edit.show
app.record.edit.show を kintone.events.on に指定すると、レコード詳細画面で編集を開始したとき(レコード編集画面の表示時)にプログラムを実行できます。
注意が必要なのは、レコード一覧上のインライン編集では発生しないことです。一覧の編集時にも処理したい場合は、app.record.index.edit.show も kintone.events.on の第一引数に含めてください。
また、スマートフォン版では mobile.app.record.edit.show を使用します。
サンプルコード
チェックボックスのチェックに応じて入力可否を制御
kintone.events.on(['app.record.edit.show'], (event) => {
/** レコード内のチェックボックスフィールド */
const categories = event.record['興味のあるカテゴリー'].value;
// 未定義または未設定の場合は処理しません
if (!categories?.length) {
return event;
}
// 動物に興味がない場合
if (!categories.includes('動物')) {
// 犬派なのか猫派なのかは入力させない
event.record['犬派_猫派'].disabled = true;
}
return event;
});
チェック
event.record[...] のキーには、フィールド名ではなくフィールドコードを指定します。アプリの設定画面で確認してください。
日付フィールドから経過日数を算出し、フィールドに設定
kintone.events.on(['app.record.edit.show'], (event) => {
const now = new Date();
/** レコード内の日付フィールド */
const dateField = event.record['日付'].value;
// 未入力の場合は処理しません
if (!dateField) {
return event;
}
const date = new Date(dateField);
// 本日までの経過日数を算出
const elapsedDays = Math.floor((now.getTime() - date.getTime()) / (1000 * 60 * 60 * 24));
// 対象フィールドに設定
event.record['経過日数'].value = elapsedDays;
return event;
});
画面にボタンを設置し、ボタンを押したタイミングでフィールド情報を別のフィールドにコピーする
/** ボタンを設置するスペース */
const SPACE_ID = 'target-space';
kintone.events.on(['app.record.edit.show'], (event) => {
/** 対象スペース */
const spaceElement = kintone.app.record.getSpaceElement(SPACE_ID);
// スペースの取得に失敗した場合は、処理をスキップ
// (show 系イベントでは event.error による画面表示はできないため、コンソールに出力します)
if (!spaceElement) {
console.error('ボタンを設置するためのスペースが存在しません');
return event;
}
/** 設置するボタン */
const button = document.createElement('button');
button.type = 'button';
button.innerText = 'コピー';
button.onclick = () => {
// ボタンがクリックされるタイミングと、イベントが発生するタイミングが異なるため、
// レコードを操作する場合は以下の方法で取得する必要があります
const { record } = kintone.app.record.get();
record['コピー先'].value = record['コピー元'].value;
kintone.app.record.set({ record });
};
// ボタンを設置
spaceElement.append(button);
return event;
});
#JavaScript
#kintone