JavaでkintoneのREST APIを使ってみる【データ削除編】

API系の記事がややご無沙汰でしたので今回はREST APIを使ったデータ削除の方法を紹介します。これでREST APIを使ったデータ登録、更新、削除ができますので基本的なところはOKだと思います。

もちろん、今回もSDKを利用します。

kintoneに登録されているデータを削除

  1. 毎度おなじみkintoneのSDKを利用するためにクラスをimport
  2. 毎度毎度恐縮ですが、まずはkintoneAPIのクラスをimportです。ただし、今回はRecordクラスは使わないのでこれは指定しなくてもOKです。

    import com.cybozu.kintone.database.Connection;
    import com.cybozu.kintone.database.ResultSet;
    import com.cybozu.kintone.database.exception.DBException;
    

     

  3. kintoneへ接続
  4. こちらも毎度毎度の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);
    }
    

     

  5. kintoneから削除対象のレコードを検索
  6. 更新時に行ったのと同じように削除対象となるレコードを検索して、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();
    }
    

     

  7. レコードを削除
  8. 後は、アプリ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万円という定額料金で提供していますので、弊社までお気軽にお問い合わせください。

 

同じカテゴリーの記事