一覧画面表示時のレコード一括更新について(ご質問)

WEB情報(https://tokux2shop.xyz/kintone-6/1051/ )を基に下記要件を実現したくテストアプリを作成しましたがうまく行きません。
・下記一覧の全件レコードをフィルターで絞り込む。
<一覧>全件表示

<フィルター>SVR Up = U

・絞り込んだレコード(5件)に対して、Checkedフィールドに"OK"で一括更新するため、テストボタンを押す。

・しかしながら、下記のエラーのため、Checkedフィールドが更新されない。また、エラー内容を見ると、全件(8件)が処理対象となっている。

申し訳ありませんが、以下2点についてご教示願います。
・エラー原因と解決方法(コード修正内容)
・フィルター後のレコード件数を更新対象とするための方法(コード修正内容)

念のため、テスト中のコードを添付致します。

(function () {
    "use strict";
    kintone.events.on('app.record.index.show', function (event) {
        if (document.getElementById ('my_index_button') !== null) {
            return;
         }
         var myIndexButton = document.createElement('button');
         myIndexButton.id = 'my_index_button';
         myIndexButton.innerHTML = 'TEST BUTTON';
 
        // ボタンクリック時の処理
        myIndexButton.onclick = function() {
            var appId = kintone.app.getId();
            kintone.api('/k/v1/records', 'GET', {app: appId}, function(resp) {
                
                //////// 更新オブジェクトの生成
                var param = {

                    "app": appId,
                     "records": []
                };
                
                 for (var i = 0; i < resp['records'].length; i++) {
                    var record = {};

                    // 分岐処理があればここで記載する(今回はすべて同じ内容が入ります)
                    record["checkbox"] = { value: "OK"};

                    param['records'][i] = {
                        "id": resp['records'][i]['$id'].value,
                        record
                    };
                 }
                 
                    kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', param, function(resp) {
                     // success
                     console.log(resp);
                 }, function(error) {
                     // error
                     console.log(param);
                     console.log(error);
                 });
             });
         };
         kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton);
      return event;
     });
 })();

以上

「1文字」だからではないでしょうか?kintoneは1文字検索できません。

https://jp.cybozu.help/k/ja/trouble_shooting/general/search_qa.html#general_search_qa_10

1文字でも検索できる!みたいなプラグイン、検索すればあるので参考にされてみるといいと思います。

らいと
早速コメント頂きありがとうございました。
1文字検索 → "U"をさしますでしょうか?
検索については、SVR Upフィールド="U"の検索はkintone標準のフィルター画面で対応することを考えています。

すみません!!めっちゃ勘違いしてました。

コード見てハッとしました。すみません。。。。

絞り込んだものをGETしたい場合はパラメータの中にクエリ入れないといけないです。
↓こういうやつです。
https://developer.cybozu.io/hc/ja/articles/202331474#step2
https://developer.cybozu.io/hc/ja/articles/202331474#q1

らいと
ありがとうございます。
GET前に検索パラメタを入れることで、標準機能のフィルターで絞ったレコード件数を取得できるようになりました。

            const body = {
                'app': kintone.app.getId(),
                'query': kintone.app.getQueryCondition(),
                'fields': ['$id', 'checkbox']
              };

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

ただ、取得したレコードの特定フィールドを一括更新することができません。

エラー原因と解決方法(コード修正内容)をご教示頂けると助かります。

コードは責任が持てませんので書かない主義です。
なのでヒントだけで申し訳ないのですが、

この行が違います。

// 分岐処理があればここで記載する(今回はすべて同じ内容が入ります)
record["checkbox"] = {value:"OK"};

理由は、以下のページのチェックボックスのvalue見てください。
https://developer.cybozu.io/hc/ja/articles/202166330

個人的に、↑のページは永久保存版だと思っています。

 

ご提示いただいたページを参考に値"OK"を[]で囲むことで解決しました。

                    record["checkbox"] = { value: ["OK"]};

また、更新フィールドが画面に反映されない事象があったため、必要かと思い、リロード用コードも追加することで、処理が完結するようになりました。

                    kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', param, function(resp) {
                    // success
                    console.log(resp);
                    // 再読み込み
                    location.reload();

あとは、レコード数の制約があるようですので、そちらも確認するように致します。
本件、ご助言頂きありがとうございました。                

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