kintoneの仕様で、CSVファイルやExcelファイルから読み込んでレコードを作成した場合、読み込んだ結果のレコード作成をきっかけとして、Customineの「やること」の実行やkintoneのWebhookの機能を使用することはできません。
そのため、ファイル読み込みによってkintoneレコードが作成された後で、kintoneの一覧画面でボタンを押した時にレコードを一括処理する、といった対応を行うことになります。
複数のレコードに対する一括処理は主に、画面のカスタマイズで行う方法と、Job Runnerの定期実行タスクで行う方法があります。
当記事は、複数レコードに対する一括採番を【画面のカスタマイズ】で行う方法をご案内します。
Job Runnerの定期実行タスクを使った方法は、こちらをご覧ください。
自動採番を行う kintone アプリ
連番フィールド、名称フィールドは共に文字列(1行)フィールドです。
想定としては、CSVファイルやExcelファイルから「名称」のみ読み込み、「連番」をCustomineで採番します。
※アプリは上記のJob Runnerを使った方法で用いているものと共通です。
自動採番の要件
連番フィールドが未入力のレコードを、CSVから読み込まれた直後のレコードとみなす
一覧画面にボタンを設置し、
ボタンが押されたら一括で自動採番する「連番」は、5桁として、桁が足りない場合はゼロ埋めする(例:00001)
手動で連番を振っていた既存レコードが存在し、すでに連番が3まで使用されているので、Customineでの採番は4から始まるように調整する
kintoneの画面から手動でレコード追加された場合も同じルールで採番する
一括で自動採番するカスタマイズ
ボタンの設置
まず、一覧画面にボタンを設置します。
これはやること「ボタンをメニュー位置に配置する」、条件「一覧画面を表示した時」を用います。
また、「やること」のボタンの場所は「一覧画面メニューの右側」、ラベルは「一括採番」にします。
採番する対象のレコードを取得し、かつ並べ替える
ボタンが押されたら、自動採番を行いたいアプリからまだ採番されていない、つまり連番フィールドが未入力のレコードを取得します。
その際に、レコードが追加された順番に採番したいので、レコード番号の昇順に並べ替えます。
一括で採番する際に順番を指定したい場合は、ここで並べ替えておいてください。
なお、やること「条件を組み立ててレコードを取得する」や、「クエリで条件を指定してレコードを取得する」による並べ替えの他に、レコードを取得した後「レコードを並べ替える」でソートする方法もあります。
ここでは、やること「条件を組み立ててレコードを取得する」、条件「ボタンを押した時」を使います。
「やること」の検索条件は次の画像のように設定します。
採番を行う
条件を組み立てて取得したレコードに、一括で採番を行います。
一般的な連番の採番にみられる「00001」のような形式でゼロ埋めしたい場合は、「ゼロ埋め」を”する”に指定します。
ただ、今回は手動で連番を振っていたレコードが存在し、採番を4から開始するように調整したいので、一旦ここではゼロ埋めはせず、採番のみ行います。
ここでは、やること「複数のレコードに対して一度に自動採番を行う」、条件「他のアクションの実行が完了した時」を使います。
この、やること「複数のレコードに対して一度に自動採番を行う」を使っているのは、条件を組み立てて取得したレコードにまとめて採番を行いたい為です。
やることのパラメーター「フィールド」は採番したいフィールド、「アプリ単位で採番」は”アプリ単位で採番”を指定します。
採番結果の書き出し
次に、採番結果をレコードに反映します。
レコードに反映する際に、採番を4から開始するように調整するために、採番結果に3を足します。
※採番は1からはじまりますので、採番を開始したい番号にマイナス1した値を足してください。
また、ここでゼロ埋めも行います。
マッピングでのゼロ埋めは、採番された数値の桁数によって頭につけるゼロの桁数を変え、文字列連結して表現します。
※例:数値が1桁(10未満)の時は、「0000」を頭につけて、「00001」をセットする
ここでは、やること「レコードを書き出す」、条件「他のアクションの実行が完了した時」を使います。
採番結果をレコードに書き出します。
書き出し先アプリは自動採番を行いたいアプリ、マッピングは下記のように指定しています。
= if((連番 + 3)<10,'0000' & 連番 + 3,if((連番 + 3)<100,'000' & 連番 + 3,if((連番 + 3)<1000,'00' & 連番 + 3,if((連番 + 3)<10000,'0' & 連番 + 3,連番 + 3))))
既存レコードが今回は「3」まで採番されているので、Customineでの採番は「4」から始めます。この時、Customineでの採番は「1」から始まるので、4になるように採番結果に+3します。
そして、その採番結果の桁数に応じてif関数でゼロ埋めを行っています。
画面のリロード
最後に採番結果を画面に表示するため、一覧画面をリロードします。
ここでは、やること「画面をリロードする」、条件「他のアクションの実行が完了した時」を使います。
kintoneの追加画面からレコード追加する時に採番するカスタマイズ
上で紹介した、CSVファイルから読み込んだ後の一括更新を行うカスタマイズ以外に、kintoneの追加画面からレコードを追加した場合も同じルールで採番したい場合は、やること「自動採番を行う」と「数値をフォーマットする」を組み合わせて使うと実現できます。
ここで重要なのは、一括採番と追加画面からの個別レコードの採番をCustomineで行うようにすれば、どちらで採番しても続きの番号から採番される、という点です。
例:一括での採番で00004〜00010が採番され、一括での採番後に画面からレコード追加すると、その続きの番号で採番されます(例:採番値が00011となる)
採番するフィールドの編集無効化
まず、採番したいフィールドをユーザーに編集されないように、無効化しておきます。
これは、やること「フィールドを無効化する」、条件「追加画面・編集画面を表示した時」を使います。
レコード追加時に自動採番する
「自動採番を行う」は、一括採番の時と同様に、「フィールド」に採番したいフィールド、「アプリ単位の採番」は”アプリ単位で採番”、「ゼロ埋め」は”しない”と指定します。
自動採番を行うタイミングは色々考えられるのですが、今回は連番が飛びにくいように「レコードを保存した直後(削除後は除く)」「現在の画面が追加画面ならば」を指定しました。
レコード保存直後に採番することで、追加画面を開いてレコード保存せずにブラウザが閉じられた場合などに採番結果の数値が飛んでしまう可能性を低くできます。
採番結果のゼロ埋めについて、先ほどの一括の採番ではif関数で行いましたが、個別のレコードの場合は「数値をフォーマットする」が使えます。
一括採番の時と同様の調整数にしたいので、「数値」で採番結果に”+3”します。
数値: = $7 + 3
整数部の桁数:5
整数部をゼロ埋めするか:整数部をゼロ埋めする
小数部をゼロ埋めするか:小数部をゼロ埋めしない
セット先フィールド(省略可):採番したいフィールド
採番値をフォーマットした結果の書き出し
次に、採番値をフォーマットした結果をレコードに反映します。
ここでは、やること「レコードを更新する(キーの値をフィールドで指定)」、条件「他のアクションの実行が完了した時」を使います。
以上でカスタマイズは完了です。
「kintoneアプリへ登録」を押してkintoneアプリにカスタマイズを反映し、実行確認してみてください。
「一括採番」ボタンを押すと、採番したいフィールドが未入力のレコードに採番結果がセットされたでしょうか?
また、kintoneに手動でレコード追加した際も、続きの番号で採番されましたでしょうか。
おわりに
一括採番と追加画面からの個別レコードの採番をCustomineで行うようにすれば、様々なパターンの採番であっても、一つの採番単位で採番する事ができ、CSVファイルから読み込んだレコードにまとめて自動採番する事もできます。
また、ご不明点等ございましたら、チャットにてご質問ください!
Customineドキュメントやサポートページも、ぜひご活用ください。