お世話になっております。
下記のサイトを参考にメインのスクリプト(main.js)から
2つのスクリプトを呼び出すスクリプトを書いています。
※仮にスクリプトa:error_category.js
スクリプトb:set_table_no.jsとする
https://developer.cybozu.io/hc/ja/community/posts/360015092003-スクリプトの実行順番
具体的な動作としては下記の通りです。
・アプリではカテゴリーを有効化していて、必須入力チェックをスクリプトaでかけています。
・アプリにはサブテーブル(フィールドコード[receipts])が配置されていて、レコード保存時に
サブテーブル一番左の文字列「No.」(フィールドコード[no])に連番が自動設定されるように
スクリプトbを組んでいます。
必須入力項目を1つも入力しない状態でレコードを保存すると
コンソールログに下記の通りの出力がされます。
1回目:「test1 test2」※スペースは改行
2回目:「test1 test2 check1 check2」
3回目:「test1 test2 check1 check2 check1 check2」
4回目:「test1 test2 check1 check2 check1 check2 check1 check2」
レコード保存時にはスクリプトaでエラーがあればスクリプトbに進まないように。
その際のコンソールログは「check1 test1 」
何もエラーがない場合のコンソールログは「check1 test1 check2 test2」と表示されるように
したいです。
testとcheckが逆転する理由は下記のコードがメイン以外のスクリプトに
入っているせいだということが判明いたしましたが、この部分を削除すると
カテゴリーが認識されません。
kintone.events.on(events, function(event) {
エラー内容
Uncaught TypeError: Cannot read property ‘カテゴリー’ of undefined at Object.MYAPP.error_category
上記の問題に対してご教示いただけますと幸いです。
よろしくお願いいたします。
main.js
(function() {
"use strict";
var events = [
'app.record.create.submit',
'app.record.edit.submit'
];
kintone.events.on(events, function(event) {
MYAPP.error_category();
console.log("test1");
MYAPP.set_table_no();
console.log("test2");
});
})();
error_category.js
window.MYAPP = window.MYAPP || {};
MYAPP.error_category = function(){
(function() {
"use strict";
var events = [
'app.record.create.submit',
'app.record.edit.submit'
];
kintone.events.on(events, function(event) {
var record = event.record;
var categoryItems = record['カテゴリー']['value']
// カテゴリーの選択が無い場合エラー表示
if (categoryItems.length === 0) {
event.error = 'カテゴリーを選択してください。';
} else {
if(categoryItems.length >= 2) {
event.error = 'カテゴリーは1つだけ選んでください。';
}
}
console.log("check1");
return event;
});
})();
}
set_table_no.js
window.MYAPP = window.MYAPP || {};
MYAPP.set_table_no = function(){
(function() {
"use strict";
var events = [
'app.record.create.submit',
'app.record.edit.submit'
];
kintone.events.on(events, function(event) {
var record = event.record;
var count = record.receipts.value.length;
// テーブルの左端列「no」に連番を設定
for( var i = 0; i < count; i++ ){
record.receipts.value[i].value.no.value = i + 1;
}
console.log("check2");
return event;
});
})();
}