ドロップダウンフィールドを利用した他フィールドへの反映

下記のコードを利用してドロップダウンフィールド(フィールドコードa)が更新されたら、文字列(一行)フィールド(フィールドコードbに文字列cを入力し別のフィールド(フィールドコードd)に更新された日付を表示させたいのですができませんでした。

どこを修正したらよいのか教えていただけませんでしょうか。

よろしくお願い致します。

``

``.index.edit.change.a’, (event) => { const record = event.record; record[‘b’].value = ‘c’;
  record[‘d’].value = date.toISO();
  return event;
});

JUSTさん こんにちは。

date は別の場所で new Date() されていますか?(またはライブラリなどを用いていますか?)

まずは console.log(date.toISO()) などで、値が更新したいフィールド(日付または日時)の形式にあっているかどうか確認されるのが良いかと思います。

日時・日付のフィールドのフォーマットは下記に記載があります。

https://cybozu.dev/ja/kintone/docs/rest-api/overview/kintone-rest-api-overview/#format-date-and-time

const date = new Date();
record['日時'].value = date.toISOString();

当方で確認したところ、日時は上記で更新されましたが、日付の場合は整型が必要だと思います!

らむさん

コメントありがとうございました。

当方のスキルでは現状対応が難しそうです。

 

 

JUSTさん

必要なのは日付フィールドでしょうか…下記のように記述してみましたがいかがでしょうか?

  kintone.events.on('app.record.index.edit.change.ドロップダウン', function(e){
    const record = e.record;
    console.log(record);
    const dt = new Date();
    record['文字列'].value = '文字';
  record['日時'].value = dt.toISOString(); //⭐️ 日時フィールドの場合はこちら
  record['日付'].value = dt.toISOString().split("T")[0]; //⭐️ 日付フィールドの場合はこちら
    return e;
});

フィールドコードはご自身のものに書き換えていただけたらと思います!

もし余裕がありましたら、kintoneコラム https://cybozudev.zendesk.com/hc/ja/articles/900000985463 にありますLuxonなど、日付操作を行えるライブラリもありますので、日付の加減など発生する場合はそちらも考慮に入れてみてください。

らむさん

重ね重ねすみません、実際以下で試してみましたが反応しないのですがわかりますでしょうか。

kintone.events.on(‘app.record.index.edit.change.a’, function(e){
    const record = e.record;
    console.log(record);
    const dt = new Date();
    record[‘b’].value = ‘c’;
    record[‘d’].value = dt.toISOString().split(“T”)[0]; //:star: 日付フィールドの場合はこちら
    return event;
  });

JUST さん

説明が不足しておりました…

function(e) で event を eとして渡しているので、最後を return e; とするか

e と書いているものを全部 event に書き換えてみていかがでしょうか?

らむさん

すみません、置き換えて試しましたが反応しない状態です。

設置する場所が違うのでしょうか?

現在はPC用のJavaScript / CSSファイルの

URL指定で追加に ⇒ https://js.cybozu.com/luxon/3.2.1/luxon.min.js を 追加して

アップロードして追加に ⇒ 以下をjsファイルで追加している状態です

kintone.events.on(‘app.record.index.edit.change.a’, function(e){
    const record = e.record;
    console.log(record);
    const dt = new Date();
    record[‘b’].value = ‘c’;
    record[‘d’].value = dt.toISOString().split(“T”)[0]; //:star: 日付フィールドの場合はこちら
    return e;
  });

JUSTさん

Luxonを導入していただいているのですね、

少々書き方変更いたしましたが、下記にていかがでしょうか。

(function () {
"use strict";

kintone.events.on('app.record.index.edit.change.a', function(e){
    const record = e.record;
    console.log(record);
    const date = luxon.DateTime.local();
   record['b'].value = 'c';
record['d'].value = date.toFormat('yyyy-MM-dd');
    return e;
});

})();

 

JavaScript/CSSファイルでの画面では、URLがjsファイルより上に位置していれば問題ないと思います!

(追記 ↑ 済みませんちょっと修正しました*)

らむさん

こんにちは、修正いただきありがとうございました。

無事に動作致しました、すごいです!

もし可能でしたらで構いませんが、現在は右端の編集するボタンからドロップダウンフィールドを操作した際に動作すると思いますが、これを左端のレコードの詳細を表示するボタンからドロップダウンを操作した際に動作するよう変更することは可能でしょうか?

 

JUSTさん こんにちは

動作してよかったです。

ご質問の件ですが、下記ページに記載があるので、該当するイベントタイプに書き換えていただいたら良いと思います。

https://cybozu.dev/ja/kintone/docs/js-api/list/

らむさん

こんにちは、お世話になります。

実は以下のように書き直してみたのですが、反応せずどう修正したらよいのかわかっていない状態です。

(function () {
“use strict”;
kintone.events.on(‘app.record.edit.change.a’, function(e){
    const record = e.record;
    console.log(record);
    const date = luxon.DateTime.local();
   record[‘b’].value = ‘c’;
record[‘d’].value = date.toFormat(‘yyyy-MM-dd’);
    return e;
});
})();

JUSTさん

直接的な回答でなく申し訳ないのですが、デベロッパーツールのコンソールには何かエラーが表示されていますか?

下記を参照していただけますと幸いです。何かの手掛かりになるかもしれません。

https://cybozudev.zendesk.com/hc/ja/community/posts/115017919603

らむさん

教えていただいたサイトを確認した結果、自己解決に至りました。

本当にありがとうございました。

助かりました!

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