新規投稿
フォローする

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

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

 

試したソースコード

(() => {
  
  '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')

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

0

3件のコメント

Avatar
mls-hashimoto

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

includesを実行する前に

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

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

1
Avatar
石井啓之

mis-hashimoto

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

0
Avatar
石井啓之

mis-hashimoto

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

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

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

1
サインインしてコメントを残してください。