一か月以上経ったレコードを削除したい

kintone RESTAPIで取得してきたJSONデータのレコードIDをbodyのidsにセットしましたが、配列に入っているものの形式が違うのか400エラーが出ます。取得してきたvalueデータを変換しなくてはならないのでしょうか。いろいろ試しましたが、検討がつきません。よろしくお願いします。

 

(function(){

    “use strict”

    var recid = [];

    kintone.events.on(‘app.record.index.show’, function(event) {

      var query = “Day < FROM_TODAY(-1,MONTHS)”;

      var body = {

        ‘app’: kintone.app.getId(),

        ‘query’: query,

      };

   

      kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, body, function(resp) {

        // success

        for(var i = 0; i < resp.records.length; i++) {

          recid.push(JSON.parse(resp.records[i][‘レコード番号’].value));

          //parseInt(resp.records[i][‘レコード番号’].value,10)

        };

        recid.map(id => id.textContent);

      }, function(error) {

        // error

        console.log(error);

      });

    });

 

    kintone.events.on(‘app.record.index.show’, function(event) {

 

      var body2 = {

        ‘app’: kintone.app.getId(),

        ‘ids’: recid,

      };

 

      kintone.api(kintone.api.url(‘/k/v1/records.json’, true), ‘DELETE’, body2, function(resp) {

        // success

        console.log(resp);

       

      }, function(error) {

        // error

        console.log(error);

      });

   

      return event;

    });

    })();

 

どこがおかしいか確認していく方針を立てました。

    var body2 = {
      'app': kintone.app.getId(),
      'ids': recid,
      };

のところに直接レコード番号を配列としていれてみて消えることを確認。

recidの配列の形に問題があるのかを調べる。

      for(var i = 0; i < resp.records.length; i++) {
        recid.push(JSON.parse(resp.records[i]['レコード番号'].value));
        //parseInt(resp.records[i]['レコード番号'].value,10)
      };
        recid.map(id => id.textContent);

のあたりでrecidに対象のレコード番号が入っていないのではないか?

debugger/console.log/ブレークポイントなどを使って調べる。debuggerでは値が入るが、消す部分でrecidの中身が消えているように見える。

  kintone.events.on('app.record.index.show', function(event) {

が 2つあることに気づく。これだと一覧の表示をすると同時に処理が行われてしまうのか?うまく行かない。

4)処理を対象レコードを探す部分と消す部分を一つにまとめる。

5)対象レコードがない場合にも空のレコード番号で消そうとしてしまうのでtotalCountを追加する。削除対象レコードが0なら処理を中止する

6)いままで削除したことなかったので知らなかったのですが、一覧画面でレコードを削除すると表示するタイミング存在したレコードが表示後に削除さます。レコードの実体はないが画面には残ります。

再読み込みすると消えます。

一覧に表示されているレコードの詳細画面をクリックしようとするとレコードが削除されていますと表示されます。

(function() {
  'use strict';

  kintone.events.on('app.record.index.show', (event) => {
    const query = 'Day < FROM_TODAY(-1,MONTHS)';
    const body = {
      app: kintone.app.getId(),
      query: query,
      totalCount: true
    };

    kintone.api(
      kintone.api.url('/k/v1/records', true),
      'GET',
      body,
      (resp) => {
        if (resp.totalCount === "0"){
            return event;
        }
        const recid = [];
        // success
        resp.records.map(row => recid.push(row.レコード番号.value));
        const body2 = {
          app: kintone.app.getId(),
          ids: recid,
        };
        kintone.api(
          kintone.api.url('/k/v1/records.json', true),
          'DELETE',
          body2,
          (resp2) => {
            // success
            console.log(resp2);
          },
          (error) => {
            // error
            console.log(error);
          }
        );
      },
      (error) => {
        // error
        console.log(error);
      }
    );
  });
  return event;
})();

一から丁寧に教えていただきありがとうございます!

初心者なので、ぜんぜん考えが足りなかったみたいです。

もう一度確認して試行錯誤してみます。ありがとうございます。

感想です。

・一覧画面表示で削除で本当によいのか?確認画面などは必要か?

・本当にデータを消す必要があるのか、表示を直近1ヶ月にすることではだめか。

・「FROM_TODAY(-1,MONTHS)」の詳細がわからず不安。2/28の1ヶ月前は1/28でよいのか?1/31を期待していないか?

・削除が成功したら表示上データが残るので自動で画面更新をかけてあげると良さそうです。

そこまで教えていただくと本当に申し訳なく思います。

お世話になります。すみません。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。