レコード新規作成/編集画面でフィールドのHTML要素を安全に取得する方法について

お世話になります。kintone の JavaScript カスタマイズについてご教示ください。

現在、レコード作成・編集画面のカスタマイズで、特定フィールドの HTML 要素を document.getElementById や固定のクラス名(例:value-xxxxxx)で直接参照する実装を行っています。しかしこれらは内部 DOM 構造や自動生成クラスに依存しており、kintone の UI 変更やアップデートで動作しなくなる懸念があります。

レコード一覧画面には kintone.app.getFieldElements(fieldCode) といったフィールド要素を取得する公式 API が用意されていますが、同等の API(あるいは推奨される取得方法)がレコードの新規作成/編集画面にも存在するかを知りたいです。もし公式 API がない場合は、以下の点について実務的に安全な代替案(推奨される設計パターンや実装例)をご教示いただけますでしょうか。

  • 新規作成/編集画面で公式 API を使ってフィールド要素を取得できるか(可能であれば API 名と利用可能な画面の明記をお願いします)。

  • 公式 API が利用できない場合の現実的な代替手段(例:kintone.app.record.get() 等のレコードデータを起点にした方法、kintone.app.record.getSpaceElement() の活用、cybozu.data.page[‘FORM_DATA’] からのマッピング、イベントベースで安全に DOM を検出するテクニック等)と、その際のリスク(将来的な破壊的変更に弱い箇所)についての具体例。参考になるサンプルコードやパターンがあれば併せてご提示ください。

なお、目的は「kintone の将来のアップデートにも耐えられる」実装にすることです。どうぞよろしくお願いいたします。

現時点ではスペースフィールドを除き、レコード追加画面やレコード編集画面でフィールドのHTML要素を取得するAPIは提供されていないようです。

そのうえで、なぜフィールドのHTML要素の取得が必要なのでしょうか。

フィールドの表示非表示や編集可否の制御は、

フィールドの値の変更時やレコード保存時の入力値の検証は、

といったAPIを利用すれば可能です。

上記よりもカスタマイズされた動作を実現したいのであれば、 kintone UI Componentなどで独自のUIを構築のうえkintoneのフィールドとは切り離して制御することや、何らかのプラグインを導入することが考えられます。

また、運用の観点から、kintone SIGNPOST ほどほどのUIカスタマイズ のように、なにをカスタマイズすべきかという点も重要です。

上記で解決しなければ、改めてなぜフィールドのHTML要素が必要かを投稿いただければ、目的とする回答が得やすいかもしれません。

1 Like