kintoneの仕様で、CSVファイルやExcelファイルから読み込んでレコードを作成した場合、Customineのやることの実行や、kintoneのWebhookの機能を使用することはできません。


そのため、ファイル読み込みによってkintoneレコードが作成された後で、kintoneの一覧画面でボタンを押した時にレコードを一括処理する、といった対応を行うことになります。


複数のレコードに対する一括処理は画面のカスタマイズで行う方法と、Job Runnerの定期実行タスクで行う方法があります。

当記事は、複数レコードに対する一括採番を【画面のカスタマイズ】で行う方法をご案内します。

Job Runnerを使った方法は、こちらをご覧ください。



自動採番を行う kintone アプリ

連番フィールド、名称フィールド共に文字列(1行)フィールドです。

想定としては、CSVファイルやExcelファイルから名称のみ読み込み、連番をCustomineで附番します。

※アプリはJob Runner版と共通です。



自動採番の要件

  1. 連番フィールドが未入力のレコードが、CSVから読み込まれた直後のレコードと見做す

  2. 一覧画面にボタンを設置し、

    ボタンが押されたら一括で自動採番する

  3. 連番は、5桁で桁が足りない場合は0埋めする(例:00001)

  4. 手動で連番を振っていた既存レコードが存在し、連番が3まで振られているので、Customineでの採番は4以降で採番する

  5. kintoneの画面から手動でレコード追加された場合も同じルールで採番する


一括採番のカスタマイズ

まず、一覧画面にボタンを設置します。

やること

ボタンをメニュー位置に配置する」  でボタンを配置します。

場所は「一覧画面メニューの右側」、ラベルは「一括採番」にしました。

条件

一覧画面にボタンを表示したいので「一覧画面を表示した時」を指定します。



ボタンが押されたら、自動採番を行いたいアプリからまだ採番されていない、つまり連番フィールドが未入力のレコードを取得します。


その際に、レコードが追加された順番に採番したいので、レコード番号の昇順に並べます。

一括で採番される際に順番を指定したい場合は、ここで並べ替えておいてください。

クエリによる並べ替えの他に「レコードを並べ替える」でソートする方法もあります。

やること

条件と並び順をまとめて指定したいので「クエリで条件を指定してレコードを取得する」を使います。

取得先アプリは採番したいアプリ、検索条件は下記を指定します。


 採番したいフィールドのフィールドコード = "" order by レコード番号 asc

条件

一覧画面に設置したボタンを押した時に処理を行いたいので「ボタンを押した時」を指定します。



クエリで取得したレコードに、一括で採番を行います。

通常は「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関数で行いましたが、個別のレコードの場合は「数値をフォーマットする」が使えます。

一括採番の時と同様に4から採番したいので、「数値」で採番結果に+3します。

 数値: = $11 + 3

 整数部の桁数:5

 整数部をゼロ埋めするか:整数部をゼロ埋めする

 小数部をゼロ埋めするか:小数部をゼロ埋めしない

 セット先フィールド(省略可):採番したいフィールド


以上でカスタマイズは完了です。



「kintoneアプリへ登録」を押してkintoneアプリにカスタマイズを反映し、実行確認してみてください。

「一括採番」ボタンを押すと、採番したいフィールドが未入力のレコードに採番結果がセットされますでしょうか?


また、kintoneに手動でレコード追加した際も、続きの番号で採番されましたでしょうか。


ご不明点等ございましたら、チャットにてご質問ください!


Customineドキュメントサポートページもぜひご活用ください。