お世話になっております。
(実現したいこと)
テーブル内の申請者(ドロップダウン)が変更された時に、テーブル内の同じ行にあります、申請日(日付フィールド)に変更時の日付を自動で入れたいと考えております。
(エラー内容)
こちらの記事を参考にフィールドコードを運用環境にあわせて変更し、読み込んだところ、 コンソールに 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様のおかげで実装することができました。
重ねてお礼申し上げます。
system
(system)
クローズされました:
5
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。