kintoneで公開されているREST APIはデータの登録/変更/削除や検索、フィールドの定義など色々な事ができ、上手く使うとkintoneをバックエンドのWebDBとして活用することが出来ます。
kintoneのREST APIを使うと例えば、
- 販売管理システムから出力される日次の売上げデータを毎日自動的にkintoneに登録し、データ分析をkintoneで行う
- kintoneで管理している在庫データを定期的に取得し、在庫管理システムに登録する
などなど、他システムとの連携を実現することができます。
今回は、Javaを使ってkintoneにデータアップロードする連携方法を紹介します。
(ダウンロードについてはまた後日・・)
他システムとkintoneとのデータ連携は行いたいけど、開発ができないという方は、カスタマイズ開発を1週間20万円という定額料金で提供していますので、弊社までお気軽にお問い合わせください。
有難い事にJava用のAPIがサイボウズさんが運営するdevelopers サイトにあるので、これを使っていきます。
ダウンロードしたSDKをExclipseなどのIDEに組み込んで下さい。(今回、IDE側の設定は省略します。)
kintoneにデータをアップロード
- kintoneのSDKを利用するためにクラスをimport
- kintoneへ接続
- kintoneにデータを登録
以下のようにkintoneAPIのクラスをimportします。
import com.cybozu.kintone.database.Connection; import com.cybozu.kintone.database.Record; import com.cybozu.kintone.database.ResultSet; import com.cybozu.kintone.database.exception.DBException;
kintoneへ接続するためにサブドメイン、API実行ユーザーログイン名、API実行ユーザーパスワードを渡します。
//kintoneへの接続 Connection db = null; try { db = new Connection("サブドメイン名", "ログイン名", "パスワード"); System.out.println("kintoneへ接続しました"); } catch (Exception e) { System.err.println("kintoneへの接続に失敗しました。" ); e.printStackTrace(); System.exit(1); }
データを登録した際にここで指定したユーザーが登録者になります。
次にデータ登録部分です。
Record record = new Record(); record.setString("フィールドコード", "値"); //文字列フィールドへ登録 record.setDate("フィールドコード", "値"); //日付、ラジオボタン、リストボックスなどのフィールドへ登録 record.setLong("フィールドコード", "値"); //数値フィールドへ登録 //kintoneにデータ登録 try { db.insert("アプリID", record); } catch (DBException e) { System.err.println("kintoneへデータアップロードに失敗しました。"); e.printStackTrace(); }
recordオブジェクトにフィールドタイプ毎に用意されているsetterにフィールドコードと値をいれ、db.insert()でkintoneへデータを登録します。
もちろん、サブテーブルや添付ファイルへの登録も可能です。
(添付ファイルの場合は、一度ファイルをアップロードして、ファイルキーを取得して、それを指定するなどちょっと面倒です。)
コードをまとめるとこんな感じになります。
import com.cybozu.kintone.database.Connection; import com.cybozu.kintone.database.Record; import com.cybozu.kintone.database.ResultSet; import com.cybozu.kintone.database.exception.DBException; public static void main(String[] args) throws IOException { Connection db = null; try { db = new Connection("サブドメイン名", "ログイン名", "パスワード"); System.out.println("kintoneへ接続しました"); } catch (Exception e) { System.err.println("kintoneへの接続に失敗しました。" ); e.printStackTrace(); System.exit(1); } Record record = new Record(); //レコードオブジェクト record.setString("フィールドコード", "値"); //文字列ラジオボタン、リストボックスなどのフィールド record.setDate("フィールドコード", "値"); //日付フィールド record.setLong("フィールドコード", "値"); //数値フィールド //kintoneにデータ登録 try { db.insert("アプリID", record); } catch (DBException e) { System.err.println("kintoneへデータアップロードに失敗しました。"); e.printStackTrace(); }finally{ db.close(); //kintone切断 } }
単純に登録するだけだったら、けっこう簡単なコードでいけてしまいます。
データ更新も検索して、レコードIDを取得するという以外は、ほぼ同じ感じでいけるます。
kintoneはデータ連携して初めて導入効果がでるものだと私は思っていますので、是非、大勢のユーザーがAPIを活用し、サイボウズさんにどんどんAPIの機能強化をしていってもらうことを望んでます(笑)