kintoneとMicrosoft Azureを連携してみよう (Azure Functionsその2)
警告
-
記事内で利用しているライブラリ「 request
」「 request-promise
」は、非推奨(deprecated)になりました。
HTTPリクエストができる他のライブラリ( axiosなど)や、 http.request
に書き換えることをおすすめします。
-
Moment.jsはメンテナンスモードになり、 日付処理できる代替ライブラリへの移行
が推奨されています。
代替ライブラリのひとつ Luxonについては、 kintoneカスタマイズでの導入方法の紹介記事 があります。
このTipsは以下の記事の続きとなります。
初めてAzure Functionsをご利用される方は(Azure Functionsその1)から始めることを推奨しています。
kintoneとMicrosoft Azureを連携してみよう (Azure Functionsその1)
こんにちは。菊地です。
前回
に引き続き今回もkintoneとAzureの連携について紹介したいと思います。
今回のテーマはAzure Functionsを使った定期実行処理についてです。
これまでは、サーバーを立てそこからスケジュール実行でプログラムを動かして処理をするのが一般的でした。
これがAzure Functionsを使うことでサーバーレスを実現できます。
サーバーレスにすることでバックエンドアプリケーションを動かすためのマシンの設定が不要になり管理コストも下がるというメリットがあります。
イメージ
今回の定期実行のイメージです。
kintone側には交通費申請アプリと交通費集計アプリの2つのアプリがあります。
ユーザは日ごろの業務で発生する交通費を交通費申請アプリに登録します。
ここではプロセス管理をしており、「未申請(下書き)」→「上長確認中」→「承認」とフローが流れます。
承認された交通費は翌月の1日AM2:00に集計処理が実行され、部署ごとに集計された月毎データが交通費集計アプリへ登録されます。
Azure Functionsの準備
Azure Functions関数
の準備を参考に設定します。
「Azure Functions関数の準備」では[タイマー]、[JavaScript]を選択してください。
パッケージのインストール
今回使用するパッケージです。
- request(HttpRequestを行うためのパッケージ)
- request-promise(Promiseを利用するためのパッケージ)
- moment(日付操作用のパッケージ)
|
|
インストール方法は kintoneとMicrosoft Azureを連携してみよう (Azure Functionsその1) を参照してください。
kintoneアプリテンプレート
アプリテンプレートの読み込みについては
アプリテンプレートファイルをkintoneに登録する
を参照してください。
テンプレートからのアプリ作成については
登録済みのテンプレートからアプリを作成する
を参照してください。
JavaScript処理フロー
開発準備ができたところで実装していきましょう。実装する処理はこちらです。
- 交通費申請アプリで前月に登録された承認済みのレコードを取得
- 取得したレコードから交通費を部署毎に集計
- 集計した結果を交通費集計アプリに登録
ソースコードの記述
コードの記載箇所は kintoneとMicrosoft Azureを連携してみよう (Azure Functionsその1) を参照してください。
|
|
上記のJSをコードに貼り付けてkintoneのサブドメイン、アプリID、APIトークンを変更してください。
|
|
- APIトークンについては
APIトークンを生成する
を参照してください。
- 交通費集計アプリのAPIトークンには閲覧と追加の権限を設定してください。
- 交通費申請アプリのAPIトークンには閲覧の権限を設定してください。
スケジューラーの設定
スケジュール項目にcron式で設定します。
|
|
フォーマット形式
項目 | 設定する値 |
---|---|
format | {second} {minute} {hour} {day} {month} {day of the week} |
To trigger once every 5 minutes: | 0 */5 * * * * |
To trigger once at the top of every hour: | 0 0 * * * * |
To trigger once every two hours: | 0 0 */2 * * * |
To trigger once every hour from 9 AM to 5 PM: | 0 0 9-17 * * * |
To trigger At 9:30 AM every day: | 0 30 9 * * * |
To trigger At 9:30 AM every weekday: | 0 30 9 * * 1-5 |
さいごに
Azure Functionsを利用した定期実行処理いかがでしたでしょうか。
今回はAzure Functionsを使いkintoneレコードの取得+追加をしました。
アイデアによってさまざまな利用パターンが考えられるのでぜひ試してみてください。
次回はkintoneレコード追加時、Azure Storageにレコードデータを登録してみます。