アプリ内テーブルのチェックボックスをコントロールしたい

アプリ内にあるテーブルのチェックボックスフィールドを保存時に自動でONにしたい。

(エラー内容)
Table update failed: {code: ‘CB_VA01’, id: ‘n5LCnRWIBuYPhRueOGDc’, message: ‘入力内容が正しくありません。’, errors: {…}}
Error details:

  1. {record.テーブル.value[1].value.チェック.values[0].value: {…}, record.テーブル.value[0].value.チェック.values[0].value: {…}, record.テーブル.value[2].value.チェック.values[0].value: {…}}

(コード)
(() => {
‘use strict’;

// レコード追加イベント
kintone.events.on('app.record.edit.submit.success', (event) => {
    const record = event.record;
    const tableRecords = record['テーブル'].value;
    
    // テーブル内のチェックボックスをONにする
    const updatedTableRecords = tableRecords.map(row => {
        return {
            value: {
                'フィールド1': {
                    'value': Number(row.value['フィールド1'].value) // 数値型
                },
                'フィールド2': {
                    'value': Number(row.value['フィールド2'].value) // 数値型
                },
                'フィールド3': row.value['フィールド3'], // 文字列
                'チェック': {
                    'value': ['ON'] // チェックボックスをONにする
                }
            }
        };
    });

    // レコード更新リクエストを送信
    const updateBody = {
        'app': kintone.app.getId(), // アプリID
        'id': record.$id.value, // レコードID
        'record': {
            'テーブル': {
                'value': updatedTableRecords // 更新されたテーブルの値を設定
            }
        }
    };

    kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', updateBody, (updateResp) => {
        // 更新成功時の処理
        console.log('Table updated successfully', updateResp);
    }, (updateError) => {
        // エラー時の処理
        console.error('Table update failed:', updateError);
        if (updateError.errors) {
            console.error('Error details:', updateError.errors); // エラーメッセージの詳細を出力
        }
    });
    
    return event;
});

})();

エラー内容から察するに送っているレコードの形がちょっと違うんでしょうね
record.テーブル.value[1].value.チェック.values[0].value: {…}, などとあるようなので、もしかして下記で指定している値が、存在しないとか?はないでしょうか。
{...} をクリックして開くとわかるかもしれない、です

                'チェック': {
                    'value': ['ON'] // チェックボックスをONにする
                }

別の原因もあるかもしれませんので、その場合は
下記の手順でみてみると原因がわかるかと思います。

  1. どういうデータ何を送っているか実際に確認する
    こちらのデバッグ記事のように、ネットワークタブを開いて何を送っているかを実際に確認してみてください
  2. リファレンスと見比べる
    こちらのレコードの更新のリファレンスに送信するリクエスト内容がのってますので間違いがないかみてみてください
    下記も参考になるかもです
    kintoneにおけるテーブル操作の基本(行の追加・更新・削除) - cybozu developer network
    レコード更新におけるテーブル操作のテクニック - cybozu developer network
1 Like

もしかして下記で指定している値が、存在しないとか?はないでしょうか。

                'チェック': {
                    'value': ['ON'] // チェックボックスをONにする
                }

上の見立てが合っていると思われます。


この図の状態でテストしたらうまくいって、チェックボックス名を「ON」以外に変えたら質問者が提示するエラーが出たので。

お世話になります。
解決しました!

勘違いしており、ONがチェックボックスをオンにするものと思っており、フィールドコードにしたら動作しました。

‘チェック’: {
‘value’: [‘チェック’] // チェックボックスをONにする
}

1 Like

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