背景・実現したいこと
kintoneアプリの入力項目で、上のような入力をボックスを作成しました。
『確認』の【確認済】にチェックを入れると、クリックした時の日時が『確認日時』へ、クリックしたユーザーの表示名(リンク付き)が『確認者』へ表示されるようにしたいです。
エラー情報 (開発者ツールのコンソール)
moment.jsを使用して、クリックした時の日時を『確認日時』へ入れることはできました。
その時に使用しているユーザー情報をどう取得して、どのように入れるのかが分からず投稿しました。
利用したソースコード
こちらのコードは、『確認日時』の部分のみです。
(function() {
“use strict”;
// レコード詳細画面の編集イベント
// ボタンクリック時の処理
kintone.events.on(‘app.record.edit.change.確認’, function(event){
var record = event.record;
// チェックボックス『確認』の【確認済】にチェックが入った場合
if(record[‘確認’].value == ‘確認済’){
// 日時ボックス『確認日時』にチェックを入れた日時が入る
// 日時を取得
moment.locale(‘ja’); // Moment.js ロケールの初期化
var presentDate = moment().format(‘YYYY-MM-DD HH:mm’);
record[‘確認日時’].value = presentDate;
// それ以外の場合
} else {
// 日時ボックス『確認日時』は空欄のまま
record[‘確認日時’].value = [];
}
return event;
});
})();
試してみました。
(function() {
"use strict";
kintone.events.on(['app.record.create.change.確認', 'app.record.edit.change.確認'], function(event){
const user = kintone.getLoginUser();
var date = new Date();
event.record.確認者.value.splice(0);
event.record.確認日時.value = "";
if(event.record.確認.value[0] === "確認済み"){
event.record.確認日時.value = formatDateTime(date);
event.record.確認者.value.push({code:user.code, name:user.name});
}
return event;
});
})();
function formatDateTime(dt) {
var y = dt.getFullYear();
var m = ('00' + (dt.getMonth()+1)).slice(-2);
var d = ('00' + dt.getDate()).slice(-2);
var hh = ('00' + dt.getHours()).slice(-2);
var mi = ('00' + dt.getMinutes()).slice(-2);
return (y + '-' + m + '-' + d + ' ' + hh + ':' + mi);
}
↓チェックすると確認日時と確認者が設定されます
↓チェック外すと消えます
masuda.mitsuo 様
コメントありがとうございます!!
載せていただいたコードを試してみたところ、私の方ではできませんでした・・・
確認者に関係する部分を消すと、確認日時の部分は動きました。
console画面で見てみると、【event.record.確認者.value.splice(0);】の部分にエラーが出ているようで、内容は【Uncaught TypeError: Cannot read properties of undefined (reading ‘value’)】と書かれていました。
確認者のフィールドコードは「確認者」でしょうか?
↓確認者の部分をフィールドコードで設定した値に置き換えてみてください。
event.record.確認者.value.splice(0);
大変失礼しました。
「確認者」のフィールコードだけ、初期値の「ユーザー選択」から変更するのを忘れていました。
フィールドコードを変更したら、無事できました。
本当にありがとうございました。