client.record.updateRecordでレコードの更新をしたい

アプリ内の電話番号で重複を見つけ、該当するレコードに重複数を更新する処理となっております。
レコードを更新する「await client.record.updateRecord(updateParams);」にて「KintoneRestAPIError: 入力内容が正しくありません。」とエラーが出てしまいます。

使用しているkintone REST API Clientは
https://js.cybozu.com/kintone-rest-api-client/1.4.0/KintoneRestAPIClient.min.js
こちらです。

下記にコードを記載致します。

(() => {
‘use strict’;

kintone.events.on(['app.record.index.show'], async event => {
  try{
    
    //アプリの確認
    let appId = kintone.app.getId();
    if(appId != 6) return event;
    
    const params = {
      app: appId,
      fields: ['顧客No', '電話番号'],
      withCursor: true
    };
    
    // 顧客管理アプリの全レコードを取得する
    const client = new KintoneRestAPIClient();
    const res = await client.record.getAllRecords(params);
    
    if(!res) return event;
    
    for (let i = 0; i < res.length; i++){
      
      let chkTell = res[i]['電話番号'].value;
      let recordId = res[i]['顧客No'].value;
      let cnt = 0;
      
      for (let j = 0; j < res.length; j++){
      
        let lopTell = res[j]['電話番号'].value;
        if(chkTell === lopTell) cnt = cnt + 1;
        
      }
      
      const updateParams = {
        app: appId,
        id: recordId,
        record: {
          重複: { 
            value: cnt 
          }
        }
      };
      
      // レコードを更新
      await client.record.updateRecord(updateParams);
      
    }
    
    return event;
    
  }catch(e){
    console.log(e);
  }
});

})();

yuchi208さん、こんばんは!

私の環境で試してみましたが、問題なく動作しました。

エラーとなる可能性を考えてみましたが、
以下の2つどちらかかなと思っています。
①updateParamsの「id」として、recordIdの変数を指定されていますが、
recordIdは、「顧客No」フィールドの値を設定されています。
この「顧客No」は、該当アプリの、
もともとkintone標準のレコード番号のフィールドコードを「顧客No」に変更した認識であっていますか?
「id」には、レコード番号を設定する仕様となっています。確認してみてください。
最終的には、kintone REST API Clientも、kintone標準のREST APIを用いてますので、
kintone REST API Clientのページが読みづらい場合は、kintoneのドキュメントを読まれるのも良いかも良いかもしれません。

②レコードを追加後、アプリ設定で「必須」のフィールドを追加し、
更新対象に、「必須」のフィールドが空のレコードが存在する場合も、
更新時に、必須エラーが発生し、「入力内容が正しくありません。」というエラーが出る可能性があります。

「入力内容が正しくありません。」というエラーが出る要因が、
上記の内容以外あまり思いつきませんでしたが、
どちらも違っていましたら、またこちらに投稿いただければと存じます。

また、少し蛇足になってしまいますが、
(もし案件でそのバージョンに統一している等でしたらそのままで良いかと思いますが)
https://cybozu.dev/ja/id/5eac8b3387b5abbfa1d8df21/#kintone-rest-api-client
kintone REST API Clientについてですが、かなり古いバージョンを使われていますので、
特に気にされていないのでしたら、新しいバージョンを使うと良いかと思います。

また、for文の中で、レコード1件ずつ更新をかけているようですが、
1レコード1回APIを飛ばしてしまうと処理が遅くなってしまったり、
1日のAPI利用回数の制限に引っかかってしまう可能性もありますので、
updateRecordsや、updateAllRecordsなどを用いて、まとめて更新するのが良いかと思います。

頑張ってください。

田中太郎さん
ありがとうございます!
無事正常に動かせましたm(_ )m
ご指摘いただいた通り、②必須エラーが発生していたようです(>
<)!

またレコード毎の更新ではなく、前回データと今回データの相違のあるもののみで更新をするよう変更致しましたm(_ _)m

kintone REST API Clientも最新のものに置き換えました!

大変助かりました!!ありがとうございました!!!

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