現在の日付を取得して自動入力

お世話になっております。

(実現したいこと)

テーブル内の申請者(ドロップダウン)が変更された時に、テーブル内の同じ行にあります、申請日(日付フィールド)に変更時の日付を自動で入れたいと考えております。

(エラー内容)

こちらの記事を参考にフィールドコードを運用環境にあわせて変更し、読み込んだところ、 コンソールに moment is not defined とエラーが出てしまっております。

エラー箇所は変更しておらず、元のコードのままなのですがなにが原因なのでしょうか。

ご教授頂けますと幸いです。

(変更後のコード)

(() => {
   'use strict';
// ロケールを初期化
  moment.locale('ja'); //エラー箇所

  kintone.events.on( 
    'app.record.edit.change.申請者',
    'app.record.create.change.申請者',
(event)=> {
    const record = event.record;
    const dateFieldCode = '申請日';
    const dateFieldValue = !record[申請者].value;
   
   if (dateFieldValue) {
      const dateFieldDate = moment(dateFieldValue);
      const element = kintone.app.record.getFieldElement(申請日);
   
 // 日付フォーマットを'MM-DD'に変更
      element.innerText = dateFieldDate.format('MM-DD');
    }  
      
      return event;
  });
})();

 

moment.js(日付操作ライブラリ)が読み込まれていないためです。

JSEdit for kintoneを使用されているかと思います。その場合は下部の「Moment.js」にチェックを入れることでライブラリを読み込むことができます。

元々の実現したいことを見落としておりました。申し訳ありません。

サンプルコードはdetail.showイベントでしか使用できないgetFieldElementを使って、申請日というフィールドのフォーマットを変更するものなので、今回ご希望されている処理とは違うかと思います。

以下のようになります。

(() => {
  'use strict';

moment.locale('ja');

  kintone.events.on([
  'app.record.create.change.申請者', 'app.record.edit.change.申請者'
], (event) => {
  let record = event.record;
  let row = event.changes.row;

  if (row.value['申請者'].value.length) {
    row.value['申請日'].value = moment().format('YYYY-MM-DD');
  } else {
    row.value['申請日'].value = '';
  }

    return event;
});
})();

mls-hashimoto

お世話になっております。

 

参考にしたコードが希望していたものと違うとは思っておりませんでした。

また、Moment.js の読み込みが必要だったのですね。

 

コードのご教授及び、解説をして頂きありがとうございます。

mis-hashimoto様のおかげで実装することができました。

重ねてお礼申し上げます。

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