kintoneのカスタマイズレアケース「フィールド値を変更する」

2024/02/10 kintone Café 徳島 Vol6 のまとめです。

re:Invent2023で刺激を受けて、色々と開発を再開しています。こちらはStep Functionsの構成図です。

  • Step Functionsなのでノーコードです。kintoneもノーコードなので、似ていますね。

この仕組みを使ったプラグインは今年中に公開を予定しています。

フィールド値を変更するときのよくある動き

  • 追加画面、編集画面を表示時は変更できる
  • 詳細画面を表示した時は変更できない
  • 一覧画面を表示した時も変更できない
  • 一覧の編集を開始する時は変更できない(無効化は出来たりする)
  • 一覧の編集画面でフィールド値を変更した時は他フィールドを変更できる
  • 編集画面でも一覧の編集画面でも、保存するときは変更できる
  • 編集画面でも一覧の編集画面でも、保存した後は変更できない

実は公式ページにまとまっています。
イベントオブジェクトで実行できる操作
フィールドの値を書き換えることが可能なイベントが表で確認できるので、意図した動きにならないという場合は確認するのが良いですね。

え?そうなの?という動き

  • フィールドAの値をセットして、フィールドBの値をセットして、その後にreturn すると両方のフィールド値が変更できる。そりゃ、そうですよね。
  • フィールドAの値をセットして、フィールドBの値を無効にして、その後にreturn すると値の変更と無効化はできる。そりゃ、そうですよね。
  • フィールドAの値をセットして、フィールドBにフィールドエラーをセットしてreturnだと、フィールドエラーだけ表示され値は変更できない。え?

え? なんで?

公式ドキュメントに書いてた


フィールドエラー表示の方が優先されちゃうらしいので、フィールド値を変更して一旦returnしてから、フィールドエラーをセットしてreturnという手順が必要になる。

え?ちょっと待って!という動き

  • 「計算」と「自動計算にした文字列1行」は値が変更できない。(そりゃそうだ。
  • 「ルックアップコピー先フィールド」を有効にして手入力とかであれば値は変更できる。よくあるカスタマイズですよね。
  • 「ルックアップコピー先フィールド」は値が変わった時のイベントで値の変更はできる。これもよくあるかな。
  • 「ルックアップコピー先フィールド」は保存するときのイベントでは値が変更できない。

え? どこにそんなこと書いてる?

  • 非対応の方は書いてた
  • 値が変わった時に変更できる方はよく分からず

別パターンの下準備

  • イベント時にreturnするJavaScriptとしないJavaScriptを作成。

別パターンの結果

  • Return event をしないJSがあると、変更が全部無しになる。

これも書いてたw

公式ドキュメントが優秀すぎる。書いてる場所に気づくのが大変だけど。

ということで

イベントの種類とか動作の組み合わせで色々と想定外の動きになることがあります。ドキュメントを全部読んで理解ってのは現実的ではないですが、大量にカスタマイズをしていると遭遇確率は上がります。

予告

  • ルックアップの取得でフィールド値を変更
  • レコード更新でフィールド値を変更

など、まだまだ特定の組み合わせ時にだけ違う動きをするケースがあります。機会があればまた。