レコード一覧画面からレコードを編集するボタンを作りたい

こちらの投稿を参考に、レコード一覧画面に設置したボタンを押すと、kintoneAPIを使用してレコードの編集を行う処理を書いています。

レコード一覧画面に表示されているレコードすべてに対し、フィールドコード「stamp」のフィールド(ラジオボタン)を「未確認」から「確認済み」に変更するような処理を想定しています。

以下ソース中のfor文が回り、レコード一覧のレコードを撫でていく処理までは正常に行えた(window.alertが出た)のですが、肝心のレコードの編集部分がうまくいきません。

通信内容の確認(参考ページ)を行ってみると「records」の中身が空っぽのままリクエストが飛んでいるように見えます。

 

下記のソースについて間違い箇所や抜けなど、見て頂けますと幸いです。

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

kintone.events.on(["app.record.index.show"], (event) => {
    let records = event.records;
    let recNum = records.length;
    let appId = kintone.app.getId();
    let recs;

    let body = {
        app: appId,
        records: []
    };


    //ボタン増殖をふせぐ
    if (document.getElementById('my_index_button') !== null) {
        return;
    }
    const myIndexButton = document.createElement('button');
    myIndexButton.id = 'my_index_button';
    myIndexButton.innerText = '確認完了ボタン';
    myIndexButton.onclick = () => {
      const myHeaderSpace = kintone.app.getHeaderSpaceElement();

        for (let i = 0; i < recNum; i++) {

            recs = records[i].$id.value;
            window.alert(i + "番目  id->" + recs);
            body.records.push(
                {
                    'id': Number(recs),
                    'record': {
                        'stamp': {
                            value: '確認済み',
                        }
                    },
                }
            )
      }
    };
//ボタンの配置
    kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton);

    return kintone.api(kintone.api.url('/k/v1/records.json', true), 'PUT', body, function (resp) {
        // success
        console.log(resp);
    }, function (error) {
        // error
        console.log(body);
        console.log(error);
    });
});

APIを実行する処理部分がボタンのクリックイベントの外にあります。クリックイベントの中でAPIを実行する必要があります。

    };
    //ボタンの配置
    kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton);

    return kintone.api(kintone.api.url('/k/v1/records.json', true), 'PUT', body, function (resp) {
        // success
        console.log(resp);
    }, function (error) {
        // error
        console.log(body);
        console.log(error);
    });

for () {
// 略
        }

        kintone.api(kintone.api.url('/k/v1/records.json', true), 'PUT', body, (resp) => {
            console.log(resp);
location.reload();
      }, (error) => {
console.error(error);
});
    };
    //ボタンの配置
    kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton);

385013133091さん

修正いただいた点を適用し、想定通りの動作を確認できました。

ありがとうございました。

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