はじめに
Integrate.ioのIntegrationページにはIntegration対象のアプリケーションとして掲載されてないのですが、Rest APIをサポートしている製品であれば、Integrate.ioからデータをつなげるものが数多くあります。ということで、今回はCybozu社が提供するkintoneについて、開発環境をお借りし、Rest APIでコネクトしデータを取得してみました。
API Tokenの生成
まずはkintone側で取得したい対象のアプリのAPI トークンを生成します。
kintoneに接続する際のヒント
ヒント1:列名について
kintone側では、あらかじめ「フィールドコード」の部分を英語に変更しておくと、Integrate.io側で日本語の抽象的な列名で出力された列名を英語に変更する手間が省けます。
ヒント2:取得条件は多彩なクエリパラメータで指定可能
今回の例では、クエリパラメータでアプリを指定した簡単なものですが、以下のページで紹介されているクエリパラメータを利用すれば、日時による条件指定など特定の条件にマッチするデータを取得することが可能です。
https://developer.cybozu.io/hc/articles/202331474#q1
Integrate.ioでパッケージ(ジョブ)を作成する
Integrate.io側ではRest APIコンポーネントを選択し、URLを入力し、ヘッダ情報にKeyに「X-Cyboze-API-Token」と先ほど生成したAPIトークンを設定画面で入力すればOKです。
設定項目を入力したら、実際にプレビューでデータが取得できたのが確認します。(今回の例では、案件管理のサンプルデータを取得しています。)
取得したJSONデータの加工処理
あとはJSONを加工するだけです。
処理1:Selectコンポーネント1
まず1回目の処理で取得したJSONデータについてシンプルな部分の加工が終わりました。
処理2:Selectコンポーネント2
通常であれば、これで終了なのですが、今回取得する案件データには、各案件ごとに営業担当者の活動履歴が存在します。1つの案件に対して複数の訪問や電話の履歴が記録されているので、そのデータも取得するには、さらに2つの工程を経てデータを抽出する必要があります。まず案件に紐づく活動履歴が数件あるので、1案件1レコードのデータを活動履歴の数ごとに行を分割して持つようにします。
処理3:Selectコンポーネント3
さらに活動ごとに行が分かれた活動履歴の列には、その中に「活動日」や「どういった活動をしたか」と言った内容の値が含まれているので、それぞれのデータから必要なデータ項目を取得します。
出力先を指定して完成:
これで完成です。最終的なジョブの構造はこんな感じです。REST APIでkintoneに接続し、データを取得後、3つの加工Stepを経て、S3に保存しています。(もちろんRedshit、Google Bigquery、Snowflakeなどにも出力可能です。)
ジョブを実行してデータ確認
実際に実行したデータを見てみましょう。
狙い通り、1つの案件レコードに4件の活動履歴がある場合、4行に分けて出力できています。あとは、スケジュールで毎日パッケージを実行するよう設定するだけです。
ちなみに、もしStep2と3を実行せずに結果を出力した場合は、以下のようなデータが出力されます。
最後に
Integrate.ioで操作感を試されたい場合は、オンラインデモにお申し込みください。