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 接続設定を行う」、条件「実行予定時刻になった時」を用います。
「やること」の条件については、アプリは自動採番を行いたいアプリを指定します。
kintoneアプリ側でAPIトークンを発行する際に、レコード閲覧とレコード編集を許可しておきます。
「名前」には、分かりやすいように接続先のkintoneアプリ名とAPIトークンに指定したアクセス権を入力しました。
条件「実行予定時刻になった時」は、Job Runnerで設定した時刻に発生する他、カスタマイズ画面から「直ちに実行」した場合も発生します。
今回は、「直ちに実行」で処理を行う想定です。
条件を組み立ててレコードを取得する
kintone接続設定が完了したら、採番したいアプリから条件を組み立ててレコードを取得します。
この時、採番したい「連番」フィールドが未入力のレコードを取得し、レコード番号の昇順に並べ替えます。
なお、ここで並べ替えを行わなかった場合、意図する順番とは異なる順番で採番されてしまう事があります。
ここでは、やること「条件を組み立ててレコードを取得する」、条件「他のアクションの実行が完了した時」を用います。
「やること」のパラメータについては、取得先アプリは一括で採番したいアプリ、APIトークンには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))))
以上で定期実行タスクの作成は完了です。
カスタマイズができたら
Job runnerでのカスタマイズは、作りによっては大量のレコードを一気に更新してしまう事があるので、実行する前にカスタマイズが正しく設定できているか改めて確認しておきましょう。
Job Runnerテスト実行の使い方 などを参考にテスト実行してみるのもおススメです!
確認ができたら、「ジョブ生成・設定」ボタンを押し、ジョブ設定画面で「直ちに実行」してみてください。
すると「実行履歴」タブで、実行結果を確認できます。
もしエラーなどが出ていましたら、カスタマイズを見直してみてください。
定期実行タスクが完成したら、これを画面から起動するボタンを作成しましょう。
画面のカスタマイズで定期実行タスクを画面から起動するボタンを作成
kintoneアプリの一覧画面に、定期実行タスクを画面から起動するボタンを作成します。
ボタンの配置は、やること「ボタンをメニュー位置に配置する」、条件「一覧画面を表示した時」を用います。
ボタンが押された時に、「定期実行タスクを直ちに起動する」を実行します。
「定期実行タスクのカスタマイズ」には、定期実行タスクのカスタマイズを指定します。
「やること」のパラメータ「gusuku APIキー」は、画面のカスタマイズからJob Runnerのカスタマイズにアクセスするために必要です。
下記の手順で取得します。
gusuku APIキーをクリックしてパラメータ設定するダイアログを表示すると次のダイアログが表示されるので、「gusuku共通管理画面へ」をクリックします。
「APIキー」タブが選択された状態になっているので、下部「APIキー作成」の「キー名称」に任意の名称を入力し、「APIキーを新規に作成」をクリックしてください。
作成が完了すると、APIキー一覧に表示されますので、錠マークをクリックして情報を展開し、APIキーをコピーしてください。
コピーしたAPIキーを「gusuku APIキー」に指定します。
これで画面に定期実行タスクを実行するボタンができました。
「kintoneアプリへ登録」し、実行を確認してみてください。
想定通りに採番されましたでしょうか?
なお、定期実行タスクの実行が完了した時に発動する条件は存在しないため、”採番が終わったら一覧画面をリロードする”といった処理はできません。
Job Runnerの実行履歴で処理の完了を確認し、手動で一覧画面を再読み込みしてください。
ご不明点等ございましたら、チャットにてご質問ください!
Customineドキュメントやサポートページもぜひご活用ください。