kintoneの仕様で、CSVファイルやExcelファイルから読み込んでレコードを作成した場合、Customineのやることの実行や、kintoneのWebhookの機能を使用することはできません。
複数のレコードに対する一括処理は画面のカスタマイズで行う方法と、Job Runnerの定期実行タスクで行う方法があります。
当記事は、複数レコードに対する一括採番をJob Runnerの【定期実行タスク】で行う方法をご案内します。
画面のカスタマイズを使った方法は、こちらをご覧ください。
Job Runnerを利用する前に、下記をご覧ください。
Job Runnerを利用するとき、初めにすること : ジョブへのスロット割り当てについて
アプリの完成イメージ
一括採番をJob Runnerの定期実行タスクで行います。
定期実行タスクではあるのですが、今回は時間を決めて実行するよりkintoneアプリの画面からボタンを押した時に処理が実行された方が便利かと思います。
ですので「Job Runnerで一括採番」ボタンをkintoneアプリの一覧画面に設置し、ボタンが押されたら定期実行タスクが実行されるようにします。
自動採番を行う kintone アプリ
連番フィールド、名称フィールド共に文字列(1行)フィールドです。
想定としては、CSVファイルやExcelファイルから名称のみ読み込み、連番をCustomineで附番します。
自動採番の要件
連番フィールドが未入力のレコードが、CSVから読み込まれた直後のレコードと見做す
一覧画面にボタンを設置し、ボタンが押されたら一括で自動採番する
連番は、5桁で桁が足りない場合は0埋めする(例:00001)
手動で連番を振っていた既存レコードが存在し、連番が3まで振られているので、Customineでの採番は4以降で採番する
一括採番のカスタマイズ
定期実行タスクを作成します。
定期実行タスクのカスタマイズ名に「自動採番」と指定しておきます。
まず、kintone 接続設定を行います。
接続設定については、こちらで詳しくご案内していますので、ご確認ください。
やること
「kintone 接続設定を行う」を指定します。
アプリは、自動採番を行いたいアプリを指定します。
kintoneアプリ側でAPIトークンを発行する際に、レコード閲覧とレコード編集を許可しておきます。
「名前」には、分かりやすいように接続先のkintoneアプリ名とAPIトークンに指定したアクセス権を入力しました。
条件
「実行予定時刻になった時」を指定します。
この条件は、Job Runnerで設定した時刻に発生する他、カスタマイズ画面から「直ちに実行」した場合も発生します。
今回は、「直ちに実行」で処理を行う想定です。
kintone接続設定が完了したら、採番したいアプリからクエリでレコードを取得します。
この時、採番したい「連番」フィールドが未入力のレコードを取得し、レコード番号の昇順に並べ替えます。
ここで並べ替えを行わなければ、意図する順番とは異なる順番で採番されてしまう場合があります。
やること
「クエリで条件を指定してレコードを取得する」を指定します。
取得先アプリは一括で採番したいアプリ、APIトークンにはkintone接続設定のアクション番号を指定します。
検索条件には下記を指定しました。
連番 = "" order by レコード番号 asc
条件
kintone接続設定が完了してから処理を行いたいので「他のアクションの実行が完了した時」を指定します。
クエリで取得したレコードに対して自動採番を行います。
ここで採番された結果をそのまま使うのであればゼロ埋めはここで行いますが、今回は手動で連番を振っていたレコードが存在し、採番を4から開始したいので、一旦ここではゼロ埋めはせず、採番のみ行います。
やること
「自動採番を行う」を指定します。
「フィールド」は採番したいフィールド、「アプリ単位で採番」は”アプリ単位で採番”を指定します。
なお、このやることを実行した時点で「フィールド」に指定した採番対象としたいフィールドには採番結果がセットされます。
条件
「レコード全行が準備できた時」を指定します。
全行の準備ができるのを待って一気に採番を行うことで、割り込みによる採番の番号飛びを低減します。
最後に、採番を4から開始するために採番結果が入ったフィールドの値に+3します。
更に、「00001」のようにゼロ埋めするためにif関数を使ってフォーマットします。
採番結果が1桁の場合は「0000」を頭に文字列連結し、「00001」を最終的な採番結果としてセットしなおします。
やること
「フィールドに値をセットする」を使用します。
セット先のレコードは「クエリで条件を指定してレコードを取得する」で取得したレコードを指定します。
値には、if関数を使った式で、採番結果に+3し、その結果をゼロ埋めした値をセットします。
= if(連番+3<10,'0000' & 連番 + 3,if(連番+3<100,'000' & 連番 + 3,if(連番+3<1000,'00' & 連番 + 3,if(連番+3<10000,'0' & 連番 + 3,連番 + 3))))
条件
採番が終わってから処理を行いたいので「他のアクションの実行が完了した時」を指定します。
以上で定期実行タスクの作成は完了です。
「ジョブ生成・設定」ボタンを押し、ジョブ設定画面で「直ちに実行」してみてください。
「実行履歴」タブで、実行結果を確認できます。
もしエラーなど出ていましたら、カスタマイズを見直してみてください。
画面のカスタマイズで定期実行タスクをキックするボタンを作成
kintoneアプリの一覧画面に、定期実行タスクをキックするボタンを作成します。
ボタンの配置はやること「ボタンをメニュー位置に配置する」を使用します。
条件は「一覧画面を表示した時」を指定します。
ボタンが押された時に、「定期実行タスクを直ちに起動する」を実行します。
「定期実行タスクのカスタマイズ」には、定期実行タスクのカスタマイズを指定します。
gusuku APIキーは、画面のカスタマイズからJob Runnerのカスタマイズにアクセスするために必要です。
下記の手順で取得します。
Customineの画面右上「gusuku 共通管理」をクリックし、gusuku共通管理画面を表示します。
「APIキー」タブをクリックし、「キー名称」に任意の名称を入力し、「APIキーを新規に作成」をクリックしてください。
作成が完了すると、APIキー一覧に表示されますので、錠マークをクリックして情報を展開し、APIキーをコピーしてください。
コピーしたAPIキーを「gusuku APIキー」に指定します。
これで画面に定期実行タスクを実行するボタンができました。
「kintoneアプリへ登録」し、実行を確認してみてください。
想定通りに採番されましたでしょうか?
なお、定期実行タスクの実行が完了した時に発動する条件は存在しないため、”採番が終わったら一覧画面をリロードする”といった処理はできません。
Job Runnerの実行履歴で処理の完了を確認し、手動で一覧画面を再読み込みしてください。
ご不明点等ございましたら、チャットにてご質問ください!
Customineドキュメントやサポートページもぜひご活用ください。