HTTP リクエストができる他のライブラリ(axios など)や、https.requst に書き換えることをおすすめします。
代替ライブラリのひとつ 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 (日付操作用のパッケージ)
$ npm install request --save-dev
$ npm install request-promise --save-dev
$ npm install moment --save-dev
インストール方法はこちら
kintone アプリテンプレート
アプリテンプレートの読み込みについてはこちら
テンプレートからのアプリ作成についてはこちら
JavaScript 処理フロー
開発準備ができたところで実装していきましょう。実装する処理はこちらです。
- 交通費申請アプリで前月に登録された承認済みのレコードを取得
- 取得したレコードから交通費を部署毎に集計
- 集計した結果を交通費集計アプリに登録
ソースコードの記述
コードの記載箇所はこちらを参照ください。
上記のJSをコードに貼り付けてkintoneのサブドメイン、アプリID、APIトークンを変更して下さい。
var BASE_URL = 'https://***.cybozu.com/k/v1/'; var APP_ID_AGG = ****; // 交通費集計アプリID var APP_ID_AGG_TRANS = ****; // 交通費申請アプリID var API_TOKEN_AGG = '****************************************'; // 交通費集計アプリのアクセストークン (閲覧/追加) var API_TOKEN_TRANS = '****************************************'; // 交通費申請アプリのアクセストークン (閲覧)
- APIトークンについてはこちら
- 交通費集計アプリのAPIトークンには閲覧と追加の権限を設定してください。
- 交通費申請アプリのAPIトークンには閲覧の権限を設定してください。
スケジューラーの設定
スケジュール項目にcron式で設定します。
0 0 2 1 * *
フォーマット形式
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にレコードデータを登録してみます。
記事に関するフィードバック
記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。