お世話になります。ネット上の情報を閲覧して作成しましたが、正常に動作しませんでした。
ご教示いただければ幸いです。
目的は次の通りです。
レコード詳細画面の編集において、「一括クリア処理」ボタンを設置し、このボタンをクリックすることで
「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});
}
})();