レコード詳細の編集画面で、初期化ボタンを配置して、クリックすることでレコード内容をクリアしたい

お世話になります。ネット上の情報を閲覧して作成しましたが、正常に動作しませんでした。
ご教示いただければ幸いです。

目的は次の通りです。
レコード詳細画面の編集において、「一括クリア処理」ボタンを設置し、このボタンをクリックすることで
「BOX番号」フィールドを除く各ルックアップ・フィールド、フィールド、サブテーブルを全てクリアする。

「一括クリア処理」ボタンをクリックしたところ、
「BOX番号を除く全データを一括クリアします。よろしいですか?」の確認メッセージが表示され、
「OK」ボタンをクリックします。
step-1
step-3
step-4 の表示の後、エラーが表示されます。メッセージは次の通りです。
『エラー カスタマイズ用のJavaScriptの実行時にエラーが発生しました。アプリの管理者にお問い合わせください。

  • event.record[‘record’].type が不正です。』
    この時、ブラウザの開発者ツールにはエラーは表示されていません。
    また、step-1、step-3を抜けていますが、画面表示されているフィールドは元の情報が表示されてクリアされません。
    ただし、サブテーブルはクリアされます。

原則がわかっていないことが原因とは思いますが、目的の処理を達成する方法をご指南いただけないでしょうか。よろしくお願いいたします。

(function() {

    “use strict”;
    
    // レコード追加、編集画面の「BOX番号」非活性処理
    var eventsEdit = [‘app.record.edit.show’];
    kintone.events.on(eventsEdit, function(event) {
        
        var record = event.record;
        record[‘BOX番号’].disabled = true;    //非活性化(入力不可へ)
        //return event;
        // ----------------------------------------------------------
        // ----------------------------------------------------------
        var myIndexButton = document.createElement(‘button’);
        
        // 任意のスペースフィールドにボタンを設置
        var mySpaceFieldButton = document.createElement(‘button’);
        mySpaceFieldButton.id = ‘my_space_field_button’;
        mySpaceFieldButton.innerText = ‘一括クリア処理’;
        
        // ボタンクリック時の処理
        mySpaceFieldButton.onclick = function () {
            var result = window.confirm(‘BOX番号を除く全データを一括クリアします。よろしいですか?’);
            //console.log( result );    // はい=>true、キャンセル=>false
            if( result ) {
                //console.log(‘OKがクリックされました’);
                var record = kintone.app.record.get();
                window.alert(“step-1”);
                record.record.物件番号.lookup = ‘CLEAR’;    //ルックアップ・フィールド
                record.record[“鍵入庫日”].value = ‘’;
                record.record[‘本数’].value = “”;
                kintone.app.record.set({record: record});
                window.alert(“step-3”);
                
                //---------- サブテーブルを初期化
                let body = {
                  app: 17, // アプリIDを指定する
                };
                
                kintone.api(kintone.api.url(“/k/v1/records”, true), “GET”, body, function(resp) {
                  initRow(“鍵貸し出し記録”);    //←サブテーブルのフィールド名を指定し、サブテーブルを初期化する
                }, function(error) {
                    // error
                    console.log(error);
                });
                
                window.alert(“step-4”);
                
            }
        };
        kintone.app.record.getSpaceElement(‘my_space_field’).appendChild(mySpaceFieldButton);
        return event;
    });
    
    
    // サブテーブル初期化関数
    function initRow(table_name) {
        let record = kintone.app.record.get().record;
        for(let i = record[table_name].value.length; i >= 0; i–){
            record[table_name].value.splice(i, 1);
        }
        kintone.app.record.set({record: record});
    }
    
})();

 

initRow の record オブジェクトの階層が違っているようです。

var record = kintone.app.record.get();
kintone.app.record.set({record: record});

let record = kintone.app.record.get().record;
kintone.app.record.set({record: record});

 

rex0220様 ご指摘ありがとうございました。

安易にコピーしたことが本件原因で、下記のステップの部分を修正することで、エラーなく目的を達成することができました。

record.record[‘本数’].value = “”;
kintone.app.record.set({record: record}); ------(右の内容に修正)------>    kintone.app.record.set(record);
window.alert(“step-3”);

 

GW期間中にもかかわらず大変助かりました。

今後も引き続き勉強していきたいと思います。