追加保存や編集時に特定の日付フィールドが空白の場合に、別の日付フィールドの値をコピーしたい

表題の実装を実現したく、下記や

https://developer.cybozu.io/hc/ja/articles/201718170–%E5%B0%8F%E6%8A%80-undefined-%E3%81%A8-%E7%A9%BA%E6%96%87%E5%AD%97%E3%81%AE%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%81%AA-if-%E6%96%87%E5%88%A4%E5%AE%9A

 

下記などを

https://developer.cybozu.io/hc/ja/community/posts/360018014523-%E6%97%A5%E4%BB%98%E3%82%92%E7%B7%A8%E9%9B%86%E6%99%82%E8%87%AA%E5%8B%95%E5%85%A5%E5%8A%9B

参考にして実装してみましたがうまく動作しません

(function () {

    "use strict";
    kintone.events.on([
        'app.record.create.submit.success', 'app.record.edit.submit.success', 'app.record.create.show', 'app.record.edit.show'
      ], function(event) {
    
  if (!record["record"]["請求日_01"]["value"]) {
    
        var record = event.record;
         
      record["record"]["請求日_01"]["value"] = ["請求日_02"];
      
        
    }
    
    return event;
    });
   })();

エラーチェックや色々試したところ、if文行のrecord直後あたりが怪しいことまではわかっているのですが、これ以上進めようがなく行き詰まっています

アドバイスや正しい記述の方法を教えていただけますと幸いです
何卒よろしくお願いいたします

追記:また2つの参考記事で[“record”]のありなしがあったため、それぞれテストしてみましたが、、、同様の箇所でエラーが発生しています※それぞれの違いについても理解できておらず、、、もし参考になるurlや知識なども教えていただけると非常に助かります

 

polygonStar さん

フォームの入力データは event.record から取得できるので、下記サンプルのように取得、値のコピー(代入)をします。

var record = event.record;
record["請求日_01"]["value"] = record["請求日_02"]["value"];

※質問文内のコードだと、if 文の行と 請求日_02 を代入する行に不備があります。

デベロッパーツールを使って、実際にデータを確認すると構造的に理解できると思います。

参考:ChromeのデベロッパーツールでJavaScriptをデバッグする方法(2022年版)

以上になります。参考になれば幸いです。

川村様

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

>※質問文内のコードだと、if 文の行と 請求日_02 を代入する行に不備があります。

を元に下記のように修正しサイド試し、デベロッパーツールで見てみましたが、、、

変わらずif文の’!record’直後でエラーが出るようです
ご指摘いただいた「if文内の不備」について、理解が足りてない結果だとは思います

また実際に保存も試してみたところ「レコードを再読み込みしてください。編集中に、ほかのユーザーがレコードを更新しました。」と表記が出てしまいます

重ねて質問で恐縮ですが、なにかご指摘の箇所があればご教授いただけますと幸いです

(function () {

    "use strict";
    kintone.events.on([
      'app.record.create.submit.success', 'app.record.edit.submit.success', 'app.record.create.show', 'app.record.edit.show'
      ], function(event) {
    
  if (!record["請求日_01"]["value"]) {
    
        var record = event.record;         
      record["請求日_01"]["value"] = record["請求日_02"]["value"];
      
        
    }
    
    return event;
    });
   })();

何卒よろしくお願いいたします

polygonStar さん

if 文の時点では record という変数が存在しないので、if 文より前に record の変数定義が必要です。

var record = event.record;

if (!record["請求日_01"]["value"]) {

また、「レコードを再読み込みしてください〜」の件についてですが、イベントの設定が .submit.success (レコード保存成功後)になっていることが原因で、.submit (レコード保存前)に変更することで回避できます。

正しくは下記の通りです。

kintone.events.on([
'app.record.create.submit',
'app.record.edit.submit',
'app.record.index.edit.submit' // レコード一覧での編集も追加
], function (event) {

詳細は下記参考にしてみてください。

以上になります。何か不明な点がありましたら、気兼ねなくご質問ください。

川村様

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

申し訳ありません
いただいたレスを見逃しておりました

早速いただいたアドバイスでコードを書き直したところ無事実装できました
まだまだ勉強中ですが1つ1つ覚えていきたいと思います
本当にありがとうございました