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

**URL:** <https://community.cybozu.dev/t/topic/5954>\
**Category:** kintone 開発相談\
**Created:** [2022 年 5 月 2 日午前 6:56 UTC](https://community.cybozu.dev/t/topic/5954 "2022-05-02T06:56:20Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account2123](https://avatars.discourse-cdn.com/v4/letter/l/ccd318/32.png) [@Legacy\_Account2123](https://community.cybozu.dev/u/Legacy_Account2123)\
**Post date:** [2022 年 5 月 2 日午前 6:56 UTC](https://community.cybozu.dev/t/topic/5954/1 "2022-05-02T06:56:20Z")

</div>

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

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

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

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

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

(function() {

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

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1517](https://avatars.discourse-cdn.com/v4/letter/l/4bbf92/32.png) [@Legacy\_Account1517](https://community.cybozu.dev/u/Legacy_Account1517)\
**Post date:** [2022 年 5 月 4 日午前 12:02 UTC](https://community.cybozu.dev/t/topic/5954/2 "2022-05-04T00:02:32Z")

</div>

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});

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2123](https://avatars.discourse-cdn.com/v4/letter/l/ccd318/32.png) [@Legacy\_Account2123](https://community.cybozu.dev/u/Legacy_Account2123)\
**Post date:** [2022 年 5 月 6 日午前 1:44 UTC](https://community.cybozu.dev/t/topic/5954/3 "2022-05-06T01:44:20Z")

</div>

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

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

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

&nbsp;

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

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