一覧画面から個別でステータスの更新

やりたいこと

詳細画面を開かず一覧画面から1件ずつステータスを更新したい

今までの仕様

一覧画面に一括更新ボタンを設置し、ステータスの一括更新を行っていましたが、リスト内の条件を変更し"次のステータスが同じでないと設定できない"という制限に引っかかってしまい、動作しなくなってしまいました。そこで代替え案として、上記カスタマイズを検討しています。

発生した問題やエラーメッセージを具体的に書きましょう

エラー

index.js:905 
         PUT https://.cybozu.com/k/v1/record/status.json 404 (Not Found)

実行したコードをコピー&ペーストしましょう

if(event.viewId == 8241672){
    // ボタン要素の作成
    const myIndexButtonSagawa = document.createElement('button');   // ボタン
    myIndexButtonSagawa.id = 'my_index_button';
    myIndexButtonSagawa.className = 'gaia-ui-actionmenu-save'; 
    myIndexButtonSagawa.innerText = '次の状態に一括更新';

    // メニューの右側の空白部分にボタンを設置
    kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButtonSagawa);

    // ボタンクリック時のイベント設定
    myIndexButtonSagawa.addEventListener('click', function() {
        // 各レコードのステータスを更新する処理
        var records = event.records;
        records.forEach(function(record) {
            var recordId = record['$id'].value;
            updateRecordStatus(recordId, '新しいステータス名');
        });
    });
}

// ステータスを更新する関数
function updateRecordStatus(recordId, action) {
    var body = {
        "app": kintone.app.getId(),
        "id": recordId,
        "action": action
    };

    kintone.api(kintone.api.url('/k/v1/record/status.json', true), 'PUT', body, function(resp) {
        alert('ステータスが更新されました');
        location.reload();  // ページをリロードして変更を反映
    }, function(error) {
        alert('ステータスの更新に失敗しました: ' + error.message);
    });
}

ボタン押したあとひとつもうまくいかないんですかね?
問題の切り分けとしてAPIを叩いたときの通信結果がどうなってるかみてみたほうがいいかとおもいます
https://cybozu.dev/ja/id/42b1d7ce01fd5d9b53dbf4df/#methods-list-5

「いいね!」 1

3件レコードがあるとしたら、3回エラーが出ている状況です。
参考URLありがとうございます!通信結果を確認したところ、エラー内容は下記の通りでした。

code
: 
"GAIA_RE01"
message
: 
"指定したレコード(id: 18)が見つかりません。"

また、調べながら以下コードに変更してみましたがいずれも"指定したレコード(id: 18)が見つかりません。"という同じエラーがでてしまいます。

(function() {
    'use strict';

    kintone.events.on('app.record.index.show', function(event) {
        // 一覧画面にボタンを設置
        if (!document.getElementById('status-update-btn')) {
            const myButton = document.createElement('button');
            myButton.id = 'status-update-btn';
            myButton.innerText = 'ステータス更新';
            myButton.className = 'gaia-ui-actionmenu-save';

            kintone.app.getHeaderMenuSpaceElement().appendChild(myButton);

            myButton.addEventListener('click', function() {
                const records = event.records;

                // 各レコードを1件ずつステータス更新
                records.forEach(function(record) {
                    var recordId = record['$id'].value;
                    console.log("Updating record with ID:", recordId);  // レコードIDをログに出力して確認
                    updateRecordStatus(recordId, '時計を発送して下さい'); // ステータス名を適切に変更
                });
            });
        }

        return event;
    });

    // レコードのステータスを更新する関数
    function updateRecordStatus(recordId, action) {
        const body = {
            "app": kintone.app.getId(),
            "id": parseInt(recordId, 10),  // 文字列から数値に変換してみる
            "action": action
        };

        kintone.api(kintone.api.url('/k/v1/record/status.json', true), 'PUT', body, function(resp) {
            // 成功時の処理
            console.log('ステータスが更新されました:', resp);
            alert('レコードID ' + recordId + ' の状態が更新されました');
        }, function(error) {
            // エラー時の処理
            console.error('ステータスの更新に失敗しました:', error);
            alert('レコードID ' + recordId + ' の更新に失敗しました: ' + error.message);
        });
    }

})();

ありがとうございます!!
ご享受いただいた通り、条件分岐にてステータスの更新ができました。
感謝いたします。

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