JobRunner 期間指定したkintoneレコード定時作成

来月のレコードを作成したい

  • その場合色々な方法があると思います
  • CSVを読み込ませる
  • プラグインを使用する
  • 連携サービスを使用する

kintoneに答えがないので、どんなルートでもできるってのは嬉しいやら悲しやらw

ただ、どの方法にも共通しているのが、何かしらアクションを起こさないといけないってことです

CSVを読み込ませる、プラグインで実行ボタンを押すとかですね

bozu
毎月月末に翌月分のレコードを作成することは決まっているのに・・・

ってことで、今回はそんな悩みを解決するCustomineのJon Runnerって新機能を使ってみました

Customine Job Runnerとは?

今まで、Customineでは

  • レコード一覧画面を開いた時
  • ボタンを押した時

など、何かしらアクションした際にカスタマイズが実行される仕組みでした

bozu
詳細画面開いた時に実行されるから、自動だと思っていたけど・・・

詳細画面を開くのが面倒くさい・・・

実行することは決まっているんだから、定時で実行してくれたら・・・

Job Runner(ジョブランナー)とは?(公式抜粋)

kintone標準機能では不可能な、kintoneの画面の外からデータ操作を可能にする、
gusuku Customineの機能です。

定期実行タスク(バッチ処理)
毎時、毎日、毎月など
設定したタイミングで処理を実行

Webhook
kintoneでイベントが実行された時、
外部サービスに通知を実行

 

期間指定してレコードを定時作成してみた

ということで、Job Runnerを使ってレコードを作成するカスタマイズを作ってみました

定期的にkintoneレコードを作成したい

Customine JobRunnerで実現したいこと

月末にとある条件で絞り込んだレコードに対して、次月の日数分レコードを作成したい

例えば、日報を事前にレコード登録しておくが、各職員分顧客分を月末に作成したい

JobRunnerを使わないのであれば、ボタンを押したタイミングでレコードを作成するのですが、押し忘れを防止するためにも定時実行したい!!

⓪JobRunner利用前準備

セキュアアクセス環境であれば、以下のページを参考にCustomine接続を許可する必要があります

セキュアアクセス環境に接続するための設定について

あと、アプリスロットをジョブへ割り当てる必要があります(割り当てていないと、実行できないので注意が必要です)

JobRunnerスロット割り当て

では、カスタマイズを1つ作ってみましょう・・・

①Customineとkintone接続設定を行う

通常のCustomineではみたことのないアクション「kintone接続設定を行う」

クエリで条件を指定してレコードを取得する際、どのアプリから取得するのか?取得するアプリをkintone接続設定を行うを事前にアクションで実行しておく必要があります。

Customine kintone接続設定
bozu
通常のCustomineはアプリにJavaScriptが登録されるけど、JobRunnerはアプリ設定を見てもJavaScriptが登録されていない。なので、ジョブの中で必要なアプリへの接続設定が必要(なんだと思う)

ということで、今回はレコード登録したい人を絞り込む為のマスターアプリと、空の記録レコードを登録する記録アプリの2つのアプリを設定しました。

②特定の日付を取得する

来月の期間分をレコード登録したいので、特定の日付を取得する

  • 来月月初
  • 来月末日

2つの日付を取得しておきます

特定の日付を設定する

③クエリで条件を指定してレコードを取得する

次に、今回はとある条件で絞り込んだレコード分、空レコードを1ヶ月レコード登録したいので、

  • ステータスが利用中
  • 曜日に月がチェックで入っている

という条件を(曜日 in (“月”) and ステータス in (“利用中”))とクエリにして、クエリで条件を指定してレコードを取得するアクションを設定しました

クエ入りで条件を指定してレコードを取得する

④日付の範囲からレコードを追加する

最後に日付の範囲からレコードを追加するというアクションを設定します

この日付の範囲は③クエリで条件を指定してレコードを取得するで設定して月初と月末日をそれぞれ開始日終了日として設定します。これでレコードを追加する日付の範囲が来月1ヶ月分となりますね。

日付の範囲からレコード取得する

ここで僕がしたミスは、アクションの実行条件をレコード全行が準備できた時を選択してしまったことです。絞り込んだレコードは複数あるのに、1つのレコード分しかレコードが登録されていませんでした。

レコード全行が準備できた時
取得したレコードの使用準備ができた時にアクションを実行します。アクションが複数のレコードを取得する場合、そのすべてを取得し終わった時に1回だけ発動します
bozu
なんとなく、全部取得してから実行するイメージだったけど、1回だけ発動か・・・

R3チャットサポートに問い合わせすると「レコード1行が準備できた時をお使いください」

レコードを取得した後の流れ(大切)

レコードを取得した後に、条件「レコード1行が準備できた時」をしています。これもJob Runnerでは典型的なパターンになります。

これにより、取得したレコードを1レコードずつ操作することが可能になります。

最後にスケジュール設定

スケジュール設定は複数設定できるみたいですので、毎時とかも可能か(1アプリスロットで1時間/月タスクが実行できるので、無限ではない)

定期ジョブ設定

実際に動作を確認してみましたが、しっかりと絞り込んだレコード分の翌月1ヶ月分レコードが追加されていました。

bozu
ずっとCustomineを使っていると、少しJobRunnerに慣れるまで時間かかるかと思いましたが、基本ルールはそこまで大きく変わらないのですぐに活用できそうでした

今回使ったアクションの1つ日付の範囲からレコードを追加するは、指定した期間全てレコード登録してくれるんですが、更に曜日などの条件を加えることは現状できないそうです(確認済)

でも、この期間のレコードを追加したいってことは結構多いので、これから多用していきたい!!