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の機能強化をしていってもらうことを望んでます(笑)