初歩的ですみません。
kintoneの日時フィールドに、画面保存時の日時を入力させたいです。
CSVによる更新と区別するためです。
moment.jsは非推奨になったとのこと、フォーラムではmomentの方法しか見つけられなかったため投稿いたします。
これだと保存されず、フォーマットの仕方がよくわかりません。初歩的で恐れ入りますが、ご教示いただけませんでしょうか。
(function() {
"use strict";
kintone.events.on(['app.record.create.submit.success','app.record.edit.submit.success','app.record.index.edit.submit.success'], function(event) {
const record = event.record;
const dt = luxon.DateTime.now();
// 保存成功時の日時を記録
record['更新日時'].value = dt;
return event;
});
})();
6件のコメント
更新日時はkintoneのシステム用の項目で、ユーザーが任意の値を入れることができない項目です。
「CSVによる更新と区別するためです。」
という文言はどのようなことを指しているのでしょうか?状況を詳しく教えてください。
CSVインポートとブラウザから操作した場合を時間によって区別したいということなのでしょうか?
@harada様
コメントありがとうございます。
補足が漏れておりました。
record['更新日時'].value
これは、kintoneの"日時"フィールドのフィールドコードを"更新日時"としているものです。
更新不可のほうではなく、手動で入力ができる日時フィールドです。ややこしく申し訳ございません。
>CSVインポートとブラウザから操作した場合を時間によって区別したいということなのでしょうか?
仰るとおりです。
CSVインポートによってkintoneのシステム用の項目の方の更新日時が変更されてしまうので、
画面操作によるレコード保存時にのみ、保存タイミングの日時が別途記録されるようにしたいです。
レコードの保存成功後イベントでは、event オブジェクトで実行できる操作がないため、フィールドの値を書き換えることもできません。
参考 https://developer.cybozu.io/hc/ja/articles/201941984#success
レコードの保存実行前イベントだと、フィールドの値を書き換えることができるのでイベントを変更すると期待する動作に近づくと思います。
参考 https://developer.cybozu.io/hc/ja/articles/201941984#step2
質問時のコードはダミーで、本当は別のフィールドコードなのでしょうか?では、なぜダミーする必要があったのでしょうか?
@mofuku様
ご回答ありがとうございます。
仰る通りかと存じます。イベントをsubmitに変更いたします。
@harada様
kintoneのシステム項目としての更新日時フィールドは、"システム更新日時"としています。
luxon.DateTime.now();
ここで取得した値を、kintoneの"日時"フィールドの形に変換して、値を代入したく質問しておりました。
質問時点は調べ方がよくなく、見つけられなかったのですが、日時フィールドに合致する型が判明し、下記コードで解決しました。
ありがとうございました。
デフォルト項目のフィールドコードは、変更できたのですか。教えていただきありがとうございました。