テーブルの行がないときにエラーが出てしまう

お世話になります。

実行日テーブルの実行日という項目に値があるとき、最終実行日という項目に実行日の値を挿入したいと考えております。

下記コードにて大まかには実現できたのですが、テーブルの行を削除した際にエラーで保存できなくなってしまいます。

Javascriptにお詳しい方、ヒントでも構いませんのでお力添えいただけないでしょうか?

jQuery.noConflict();
(function($) {
“use strict”;

kintone.events.on([‘app.record.index.edit.submit’,‘app.record.create.submit’,‘app.record.edit.submit’], function (event) {

var record = event.record;

//ログインユーザー情報取得
var user = kintone.getLoginUser();
var userFlag;
//ログインユーザーが社内ユーザーなのかどうか判定をする
//userArrayに社内ユーザーを追加
var userArray = [‘A’,‘B’,‘C’];
//ログインユーザーが社内ユーザーならuserFlag = 1とする
for(var x = 0; x < userArray.length; x++){
if(userArray[x] === user.name){
userFlag = 1;
break;
}
}

//サブテーブルから最下部の行の値を取得
var index = record[‘実行日テーブル’].value.length -1;
var targetRow = record[‘実行日テーブル’].value[index].value; // テーブル最下部の行を取得
var date = targetRow[‘実行日’].value;
// 実行日テーブルの行数を取得
var count = record.実行日テーブル.value.length;

//総務かつ実行日テーブルに値があれば値を反映させる
if ( userFlag === 1 ) {
for ( var i = 0; i < count; i++ ) {
if( record.実行日テーブル.value[i].value.実行日.value !== [] ) {
record[‘最終実行日’].value = date;
}
}
}
return event;
});

})(jQuery);

こんにちは。
デバッグした時に、どの辺りでどんなエラーが出てますか?

>Kazuhiro Yoshidaさま

ありがとうございます!

今しがた確認しましたところ、show.jsの116行目 throw a; において、
Uncaught TypeError: Cannot read property ‘value’ of undefined というエラーが出ております。

こちらの記事を見る限りでは”show.js自体ではなく、kintoneではフィールドコードの指定誤りがある”とのことだったのですが、この理解で間違っていないでしょうか?

こんにちは。

下記コードのどこかでエラーになっていると思われます。

デバッグコードで変数等の値を確認されると良いかと思います。

console.log(index); など。

 

//サブテーブルから最下部の行の値を取得
var index = record[‘実行日テーブル’].value.length -1;
var targetRow = record[‘実行日テーブル’].value[index].value; // テーブル最下部の行を取得
var date = targetRow[‘実行日’].value;
// 実行日テーブルの行数を取得
var count = record.実行日テーブル.value.length;

//総務かつ実行日テーブルに値があれば値を反映させる
if ( userFlag === 1 ) {
for ( var i = 0; i < count; i++ ) {
if( record.実行日テーブル.value[i].value.実行日.value !== [] ) {
record[‘最終実行日’].value = date;
}
}
}
return event;
});

})(jQuery);

>Kazuhiro Yoshidaさま

ご返信ありがとうございます。

console.log(変数);を実施いたしましたところ、以下の変数において全て下記のようなエラーが返ってまいりました・・。

エラーの出た変数

・var index
・var targetRow
・var date
・var count

”Uncaught ReferenceError: date is not definedat <anonymous>:1:13”

これはそもそも変数が定義出来ていないのでしょうか?

こんにちは。

自分の環境でコードをコピーして試してみても、エラーは発生しませんでした。

上記のエラーは、おそらくどこかで定義されていない変数"date"を参照しているということ
だと思います。

どこかは私にはよく分からなかったので、下記のようにされてはいかがでしょうか?

  1. ログを表示するだけのコードにして確認。

(function() {
“use strict”;
kintone.events.on([‘app.record.index.edit.submit’,‘app.record.create.submit’,‘app.record.edit.submit’], function (event) {

var record = event.record;
console.log(record);

});

})();

2.少しづつコードを足していって確認する。

 

エラーに関しては下記も参照ください。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Errors/Not_defined