サブテーブルの文字列フィールドに半角スペースまたは全角スペースがある場合エラーにしたい

サブテーブルの文字列フィールドに半角スペースまたは全角スペースがある場合エラーにしたい

 

試したソースコード

(() => {
  
  'use strict';
  
  kintone.events.on(['app.record.create.submit','app.record.edit.submit'],function(event){
    const record = event.record;
    for (let i = 0; i < record['サブテーブルのフィールドコード'].value.length; i++) {
    if (record['サブテーブルのフィールドコード'].value[i].value['サブテーブル内の文字列フィールドのコード'].value.includes(" ") || record['サブテーブルのフィールドコード'].value[i].value['サブテーブル内の文字列フィールドのコード'].value.includes(" ") ) {
    record['サブテーブルのフィールドコード'].value[i].value['サブテーブル内の文字列フィールドのコード'].error = '不要なスペースが入っています。';
    event.error = '基本セットIDに不要なスペースが入っているのでご確認ください。';
    }
    
    }
    return event;
    
  });
})()

エラー情報

サブテーブル内に入力がある場合は問題なく動き、半角スペース、全角スペースがある場合アラートが出るのですが、サブテーブルに何も情報がない場合に保存ができないというエラーが出ます。

googleのデベロッパーツールでエラー内容を確認したところ以下でした。

TypeError: Cannot read properties of undefined (reading ‘includes’)

原因が分かる方がおりましたら教えていただけると幸いです。

文字列フィールドは空白の場合、値がundefined(未定義値:それ以上のプロパティを持たないもの)になります。それに対してincludes(文字や配列に対して、対象のプロパティにアクセスして実行)を行っているためエラーになっています。

includesを実行する前に

if (record['サブテーブルのフィールドコード'].value[i].value['サブテーブル内の文字列フィールドのコード'].value) {
// 略
}

と、value(値)があるかどうかの判定を行うのが必要です。

mis-hashimoto

うわー!なるほど!
すごく納得できました!
早速ためしてみます!
ありがとうございます!

mis-hashimoto

こちら無事に解決しました!

ずっと悩んでいたので、とても勉強になるとともに助けられました。

ありがとうございました!

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。