はじめに

Integrate.ioのIntegrationページにはIntegration対象のアプリケーションとして掲載されてないのですが、Rest APIをサポートしている製品であれば、Integrate.ioからデータをつなげるものが数多くあります。ということで、今回はCybozu社が提供するkintoneについて、開発環境をお借りし、Rest APIでコネクトしデータを取得してみました。

API Tokenの生成

まずはkintone側で取得したい対象のアプリのAPI トークンを生成します。

thumbnail image

kintoneに接続する際のヒント

ヒント1:列名について

kintone側では、あらかじめ「フィールドコード」の部分を英語に変更しておくと、Integrate.io側で日本語の抽象的な列名で出力された列名を英語に変更する手間が省けます。

thumbnail image

ヒント2:取得条件は多彩なクエリパラメータで指定可能

今回の例では、クエリパラメータでアプリを指定した簡単なものですが、以下のページで紹介されているクエリパラメータを利用すれば、日時による条件指定など特定の条件にマッチするデータを取得することが可能です。

https://developer.cybozu.io/hc/articles/202331474#q1 

Integrate.ioでパッケージ(ジョブ)を作成する

Integrate.io側ではRest APIコンポーネントを選択し、URLを入力し、ヘッダ情報にKeyに「X-Cyboze-API-Token」と先ほど生成したAPIトークンを設定画面で入力すればOKです。thumbnail image

設定項目を入力したら、実際にプレビューでデータが取得できたのが確認します。(今回の例では、案件管理のサンプルデータを取得しています。)

thumbnail image

取得したJSONデータの加工処理

あとはJSONを加工するだけです。

処理1:Selectコンポーネント1

まず1回目の処理で取得したJSONデータについてシンプルな部分の加工が終わりました。

thumbnail image

 

処理2:Selectコンポーネント2

通常であれば、これで終了なのですが、今回取得する案件データには、各案件ごとに営業担当者の活動履歴が存在します。1つの案件に対して複数の訪問や電話の履歴が記録されているので、そのデータも取得するには、さらに2つの工程を経てデータを抽出する必要があります。まず案件に紐づく活動履歴が数件あるので、1案件1レコードのデータを活動履歴の数ごとに行を分割して持つようにします。

thumbnail image

 

処理3:Selectコンポーネント3
さらに活動ごとに行が分かれた活動履歴の列には、その中に「活動日」や「どういった活動をしたか」と言った内容の値が含まれているので、それぞれのデータから必要なデータ項目を取得します。

thumbnail image


出力先を指定して完成:

これで完成です。最終的なジョブの構造はこんな感じです。REST APIでkintoneに接続し、データを取得後、3つの加工Stepを経て、S3に保存しています。(もちろんRedshit、Google Bigquery、Snowflakeなどにも出力可能です。) 

 thumbnail image

ジョブを実行してデータ確認

実際に実行したデータを見てみましょう。

狙い通り、1つの案件レコードに4件の活動履歴がある場合、4行に分けて出力できています。あとは、スケジュールで毎日パッケージを実行するよう設定するだけです。

thumbnail image

ちなみに、もしStep2と3を実行せずに結果を出力した場合は、以下のようなデータが出力されます。

thumbnail image

最後に

Integrate.ioで操作感を試されたい場合は、オンラインデモにお申し込みください。