同一アプリの他のレコードの一括更新

レコード新規登録時に、同一アプリ内の他のレコードを一括更新しようとしています。

新規登録しようとしているレコードと顧客コードが一致していて「処理フラグ」(チェックボックス型)が未チェックのレコードがあればそれらを一括して「済み」のチェックを入れる処理を「第11回 kintone REST APIを利用したレコード更新(ルックアップ自動更新)」を参考にして作っているのですが、Bad request 400になります。

特にトリッキーなことはしておらずほとんどチュートリアルのお手本のままなのですがエラーとなり、consoleにPUTリクエスト内容をログ出力してリクエスト内容を見ても問題ないように思いますが、エラーの理由がまったくわかりません。

どなたかご教授いただけないでしょうか?

 

function createPutRecords(records) {
  var appId = kintone.app.getId();
  var putRecords = [];
  for (var i = 0, l=records.length; i < l; i++) {
    var record = records[i];
    putRecords[i] = {
      id: record.$id.value,
      record: {
        ‘処理フラグ’: {
          value: [‘済み’]
        }
      }
    };
  }
  return putRecords;
}

kintone.events.on(‘app.record.create.submit’, function(event) {
  var appId = kintone.app.getId();
  var paramGet = {
    ‘app’: appId,
    ‘query’: ‘顧客コード = "’ + event.record[‘顧客コード’].value + ‘" and 処理フラグ in (“”)’
  };

  return kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, paramGet).then(function(resp) {
    var records = resp.records;
    var paramPut = {
      ‘app’: appId,
      ‘records’: createPutRecords(records)
    };
    console.log(JSON.stringify(paramPut));
    return kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘PUT’, paramPut);
  }).then(function(resp2) {
    alart(‘更新が完了しました’);
    return event;
  }).catch(function(error) {
    alert(‘エラーが発生しました’ + error.message);
    return event;
  });

});

 

なお、PUT前に吐き出しているconsole.logの結果は、

{“app”:32,“records”:[
{“id”:“5”,“record”:{“処理フラグ”:{“value”:“済み”}}},
{“id”:“4”,“record”:{“処理フラグ”:{“value”:“済み”}}},
{“id”:“3”,“record”:{“処理フラグ”:{“value”:“済み”}}},
{“id”:“2”,“record”:{“処理フラグ”:{“value”:“済み”}}}
]}

となっています。

よろしくお願いいたします。

kataoka190 さん

こんにちは。mofuku です。

「Bad request 400」が出るとのことですが、ソースコードのどの部分で出ているかわかりますでしょうか。

貼っていただいたソースコードを拝見し、試しに簡単なアプリで動作確認をしました。
「Bad request 400」が出力することを再現することはできませんでしたが、
「alart in not defined」というエラーが出ました。
PUT が成功した場合の動作の中に書いているアラート文のスペルが間違っていたようです(正しくは ‘alert’)。

同一アプリ内ですでに存在する顧客コードが同じレコードの処理フラグも「済み」になっていることが確認できました。

「Bad request 400」の詳しい内容がわかれば、もっとお伝えできることがあるの思うのですが…力不足ですみません。
エラー内容を詳しく見る場合は以下の記事が参考になりそうです。

mofuku さん

コメントありがとうございます!
また実際に試していただくまでして大変恐縮です。

そして、なんとなぜか勝手に解決していました。

Bad request 400の詳細内容を取得しようと、一応ご指摘のアラートのスペルミスを正したのみで実行したところエラー出ず。
アラートのスペルミスを戻して実行してもエラーは出ませんでした。(mofukuさん同様「alart in not defined」と出ましたが)

う~ん、なんてことでしょう。解決したのは良いのですが、すごく気持ち悪いです。
kintone側のメンテナンス状態とかですかね。。

とにかく解決しましたのでこれでしばらく様子見てみます。

本当にありがとうございました。そして大変お騒がせしましたm(__)m