条件を満たさないと[保存]ボタンが押せない時の対処法について

日付を指定するフィールド「開始日」と「終了日」とドロップダウンのフィールド「プラン」があり、

レコード保存時にこれらのフィールドで入力された内容を合算した名称を、「合算名称」フィールドに

自動入力したいと考えています。

「合算名称」には

“「プラン」で選択した項目によって決まっている名称” + “_” + “開始日” + “-” “終了日”

と入力したいです。また開始日と終了日は日付フィールドの入力値からハイフンを取り除いた値を使用します。

例として、 “AAA_20200325-20250401” のような感じで「合算名称」に自動入力されることを検討しています。

以下のコードで試してみたところ、「開始日」と「終了日」と「プラン」が全て入力されている場合は、

うまく動作したのですが、「開始日」や「終了日」が未記入の場合、[保存]ボタンを押しても反応しません。

「開始日」が未入力の時は、「合算名称」に自動入力しないで[保存]ボタンを押せるようにすることはできないでしょうか。

(function() {
    "use strict";
    var events = ['app.record.create.submit','app.record.edit.submit'];
    kintone.events.on(events, function(event) {
        var record = event.record;

        var date_start = record['開始日'].value;
        var yymmdd_start = (date_start.split('-').join(''));
        var date_end = record['終了日'].value;
        var yymmdd_end = (date_end.split('-').join(''));
        if (record['プラン']['value'] === 'プランA') {
            var Certificatename = "AAA"
            record['合算名称']['value'] = Certificatename + "_" + yymmdd_start + "-" + yymmdd_end;
        } else if(record['プラン']['value'] === 'プランB') {
            var Certificatename = "BBB"
            record['合算名称']['value'] = Certificatename + "_" + yymmdd_start + "-" + yymmdd_end;
        } else {
            var Certificatename = "XXX"
            record['合算名称']['value'] = Certificatename + "_" + yymmdd_start + "-" + yymmdd_end;
            }
    return event;
});
})();

ku様

お世話になっております。
トヨクモの江田と申します。

「record[‘合算名称’][‘value’]」に代入する箇所を,date_startがセットされている場合のみ動作するようif文で囲めばよいと思います.

(function () {
  "use strict";
  var events = ['app.record.create.submit', 'app.record.edit.submit'];
  kintone.events.on(events, function (event) {
    var record = event.record;
    var date_start = record['開始日'].value;
    var yymmdd_start = (date_start.split('-').join(''));
    var date_end = record['終了日'].value;
    var yymmdd_end = (date_end.split('-').join(''));
    if(date_start){
      if (record['プラン']['value'] === 'プランA') {
        var Certificatename = "AAA"
        record['合算名称']['value'] = Certificatename + "_" + yymmdd_start + "-" + yymmdd_end;
      } else if (record['プラン']['value'] === 'プランB') {
        var Certificatename = "BBB"
        record['合算名称']['value'] = Certificatename + "_" + yymmdd_start + "-" + yymmdd_end;
      } else {
        var Certificatename = "XXX"
        record['合算名称']['value'] = Certificatename + "_" + yymmdd_start + "-" + yymmdd_end;
      }
    }
    return event;
  });
})();

江田篤史様

ご回答いただきありがとうございます。

確認してみましたが、以下の処理ができないため保存ができないようでした。

varyymmdd_start = (date_start.split('-').join(''));

上記の開始日と終了日からハイフンを取り除いた値を使用するようにしなければ、
江田様からご提示いただいた方法で対象ができたのですが、この処理をどのように
修正すればよいか宜しければご教示いただければと存じます。

江田篤史様

以下のように修正したところ、保存ができるようになりました。

開始日や終了日が未記入の場合“undefined”と文字が入力されてしまうようですが、とりあえずこれで使用できそうです。
ご協力いただき大変ありがとうございました。

(function () {
"use strict";
var events = ['app.record.create.submit', 'app.record.edit.submit'];
kintone.events.on(events, function (event) {
var record = event.record;

var date_start = record['開始日'].value;
if(date_start){var yymmdd_start = (date_start.split('-').join(''));}

var date_end = record['終了日'].value;
if(date_end){var yymmdd_end = (date_end.split('-').join(''));}

if (record['プラン']['value'] === 'プランA') {
var Certificatename = "AAA"
record['合算名称']['value'] = Certificatename + "_" + yymmdd_start + "-" + yymmdd_end;
} else if (record['プラン']['value'] === 'プランB') {
var Certificatename = "BBB"
record['合算名称']['value'] = Certificatename + "_" + yymmdd_start + "-" + yymmdd_end;
} else {
var Certificatename = "XXX"
record['合算名称']['value'] = Certificatename + "_" + yymmdd_start + "-" + yymmdd_end;
}

return event;
});
})();

ku様

お世話になっております。
確認不足でした。
申し訳ございません。

上記コードの7行目と9行目をif文内に移動すれば動作すると思います。
あと一応、「if(date_start){」を「if(date_start && date_end){」に変更しておいた方が良いと思います。

 

 

すれ違いでしたね。

動作したようで良かったです。

今後ともよろしくお願いいたします。

江田篤史様

ご回答いただきありがとうございます。

江田様よりご提案いただいた書き方のほうが、見栄えが良さそうでしたので
そのように修正して動作することができました。

ご対応いただき大変助かりました。
今後とも何卒よろしくお願い申し上げます。