kintone と Microsoft Azure を連携してみよう (Azure Functions その2)
警告
-
記事内で利用しているライブラリ「 request 」「 request-promise 」は、非推奨(deprecated)になりました。
HTTP リクエストができる他のライブラリ( axios など)や、 https.requst に書き換えることをおすすめします。 -
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 にレコードデータを登録してみます。