新規投稿
フォローする

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

日付を指定するフィールド「開始日」と「終了日」とドロップダウンのフィールド「プラン」があり、
レコード保存時にこれらのフィールドで入力された内容を合算した名称を、「合算名称」フィールドに
自動入力したいと考えています。

「合算名称」には
“「プラン」で選択した項目によって決まっている名称” + “_” + “開始日” + “-” “終了日”
と入力したいです。また開始日と終了日は日付フィールドの入力値からハイフンを取り除いた値を使用します。
例として、 “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;
});
})();
0

5件のコメント

Avatar
江田篤史

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;
  });
})();
1
Avatar
ku

江田篤史様

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

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

 var yymmdd_start = (date_start.split('-').join(''));

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

0
Avatar
ku

江田篤史様

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

開始日や終了日が未記入の場合“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;
});
})();
1
Avatar
江田篤史

ku様

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

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

 

 

すれ違いでしたね。

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

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

江田篤史により編集されました
1
Avatar
ku

江田篤史様

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

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

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

0
ログインしてコメントを残してください。