API系の記事がややご無沙汰でしたので今回はREST APIを使ったデータ削除の方法を紹介します。これでREST APIを使ったデータ登録、更新、削除ができますので基本的なところはOKだと思います。
もちろん、今回もSDKを利用します。
kintoneに登録されているデータを削除
- 毎度おなじみkintoneのSDKを利用するためにクラスをimport
- kintoneへ接続
- kintoneから削除対象のレコードを検索
- レコードを削除
毎度毎度恐縮ですが、まずはkintoneAPIのクラスをimportです。ただし、今回はRecordクラスは使わないのでこれは指定しなくてもOKです。
import com.cybozu.kintone.database.Connection; 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); }
更新時に行ったのと同じように削除対象となるレコードを検索して、ResultSetにセットします。
繰り返しになりますが、検索はSQL文を書くのと同じ形なので
例えば「件名フィールド(コード:title)に「ジョイゾー」という文字列が含まれていて、更新日時がAPI実行日以前のレコードを検索したい場合は、
title like “ジョイゾー” and updated_time <= TODAY()
という書き方になります。
String query = "title like \"ジョイゾー\" and updated_time <= TODAY()"; //検索文字列 // select records ResultSet rs = null; long record_id = 0; try { rs = db.select("アプリID", query, null); //データ検索を実行し、結果をResultSetにセット rs.next(); record_id = rs.getId(); //とりあえず先頭のレコード番号を取得 } catch (DBException e) { System.err.println("kintoneからのデータ取得に失敗しました。"); e.printStackTrace(); }
後は、アプリIDとレコード番号をキーにしてレコード削除のメソッドを実行します。
//kintoneにデータ登録 try { db.delete(db.update("アプリID", record_id); } catch (DBException e) { System.err.println("データ削除に失敗しました。"); e.printStackTrace(); }
削除はレコードIDを指定するだけなので簡単です。
コードをまとめるとこんな感じになります。
import com.cybozu.kintone.database.Connection; 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); } String query = "title like \"ジョイゾー\" and updated_time <= TODAY()"; //検索文字列 // select records ResultSet rs = null; long record_id = 0; try { rs = db.select("アプリID", query, null); //データ検索を実行し、結果をResultSetにセット rs.next(); record_id = rs.getId(); //とりあえず先頭のレコード番号を取得 } catch (DBException e) { System.err.println("kintoneからのデータ取得に失敗しました。"); e.printStackTrace(); } //kintoneにデータ登録 try { db.delete("アプリID",record_id); } catch (DBException e) { System.err.println("データ削除に失敗しました。"); e.printStackTrace(); }finally{ db.close(); //kintone切断 } }
deleteメソッドにはレコード番号を List で渡しての一括削除やクエリを投げての削除もできそうです。(すみません、試してません。。)
他システムとkintoneとのデータ連携は行いたいけど、開発ができないという方は、カスタマイズ開発を1週間20万円という定額料金で提供していますので、弊社までお気軽にお問い合わせください。