Cybozu developer networkのTipsのURL:

https://developer.cybozu.io/hc/ja/articles/202796890


レコードを作成するときに最初からテーブルに必要な分だけ行を用意し、各行に初期値を入れておきたいことってありますよね!


今回はレコード作成時に毎回自動で同じ数の行を用意し、各行に初期値を入れるカスタマイズをご紹介します!


Customineの基本的な事柄は、こちらの「はじめてのカスタマイズ」をご参照ください。


アプリのフォーム

以下の2フィールドを作成し、一つのテーブルにします。


フィールドタイプ

フィールド名

フィールドコード

備考

数値

数値

数値


文字列 (1行)

文字列 (1行)

文字列__1行_




やりたいこと

追加画面を表示したときに、テーブルに下のような初期値を持たせた状態にする。


Customineの設定

「レコード更新におけるテーブル操作のテクニック」のTipsで紹介したアクションを多く使っています。そちらもご覧ください。


一行目に値をセット

まず一行目の各フィールドに値をセットします。

一つ目のフィールドは「追加画面を表示した時」、二つ目のフィールドからは「他のアクションの実行が完了した時」を条件として「フィールドに値をセットする」で各フィールドに値をセットしていきます。


追加画面を表示したときはテーブルには一行しかない(レコード再利用時は除く)ので今回は「フィールド値が特定の値ならば」で行を指定する必要はありません。


テーブルに行を追加する

二行目からは「テーブルに行を追加する」で行の中の全フィールドに対して値を設定した状態で行を追加できます。必要な行数だけこのアクションを追加してください。


ここまで出来たら「kintoneアプリへ登録」でアプリにカスタマイズを反映させてからレコード追加ボタンを押してみましょう。

狙い通り自動で初期値が入りました!


レコード再利用時の対応方法を考える

ここまででレコード新規追加時にテーブルに初期値を入れることができるようになりました。


しかし、レコード再利用時も「追加画面を表示した時」に含まれるので、レコード再利用時には元のテーブルがコピーされた状態で各アクションが発動してしまい、中途半端な状態になってしまいます。


この場合、対応方針としては多くの場合、


  • レコード再利用時も初期値を入れる(元のテーブルはクリアする)

  • レコード再利用時は初期値を入れない


のどちらかになると思います。それぞれの場合についてどう変更すると実現できるか考えてみましょう。


レコード再利用時も初期値を入れる(元のテーブルはクリアする)場合


フィールド値をクリアする」でテーブルそのものを指定するとテーブルの全行を削除し、空の行が一行あるだけの状態にします。これを使って、初期値をセットする前に、コピー元のレコードからコピーされたテーブルをクリアします。


レコード再利用時は初期値を入れない場合

レコード再利用時ではない追加画面でのみ、初期値をセットする一連のアクションを実行したいので、条件を「追加画面を表示した時」にレコード再利用時ではないことを判断する条件を追加したいです。


今回は、毎回必ず入力するフィールドが空のとき = 再利用画面ではない、と考えて、「フィールド値が特定の値ならば」を使って判断してみます。


判断対象のフィールドが入力必須設定になっているとより確実ですよ!



ここでは判断対象とするフィールドとして「必須項目」という名前の文字列(一行)フィールドを追加し、入力必須の設定にしています。




これで、レコード再利用時は初期値セットの一連のアクションが発動しないようになりました。


終わりに

今回は「レコード更新におけるテーブル操作のテクニック」のTipsを応用して、レコード作成時にテーブルに必要な行を用意し、初期値を入れておくカスタマイズをご紹介しました。


一口に初期値を入れる、と言っても運用方法によって細かい部分で違いが出てきます。


Customineは目指す動きに素早くたどり着けるので、その分どういう仕様にするべきなのかをじっくり考えるのに時間を充てることができます。


業務に合ったカスタマイズを施して、より親切になったkintoneをお楽しみください!


Customineヘルプサポートをご活用ください。


もし分からないことがありましたら、フォーラムの方でご質問ください。