アクションボタンを押下時に現在の日時を自動入力する方法について

レコード詳細画面にあるアクションボタンを押した時に、日時フィールドに現在の日時を入力するようなカスタマイズをしたいのですがうまくいきません。

下記コードのおかしな点等を教えていただけますと幸いです。

私はプログラミング初心者でChatGPTなどやコードのつぎはぎでコード作成をしているので、そもそもかなり見当違いなコードかもしれません。

 

(function() {
  'use strict';

  kintone.events.on('app.record.detail.show', function(event) {
    var button = document.querySelector('.gaia-app-statusbar-action-label[title="ToDo作成"]');
    var datetimeField = kintone.app.record.getFieldElement('日時フィールド');

    if (button && datetimeField) {
      button.addEventListener('click', function() {
        var now = new Date();
        var formattedDate = formatDate(now);
        datetimeField.value = formattedDate;
      });
    }

    function formatDate(date) {
      var year = date.getFullYear();
      var month = padZero(date.getMonth() + 1);
      var day = padZero(date.getDate());
      var hours = padZero(date.getHours());
      var minutes = padZero(date.getMinutes());
      return year + '/' + month + '/' + day + ' ' + hours + ':' + minutes;
    }

    function padZero(num) {
      return ('0' + num).slice(-2);
    }
  });
})();

 

    var datetimeField = kintone.app.record.getFieldElement('日時フィールド');

        datetimeField.value = formattedDate;

この2行に問題があります(後述しますが、そもそもやりたいことが分からないので、場合により全てに問題があります)。getFieldElement()はフィールド要素の取得で、装飾(色等)を変えるためのものなのでvalue(値)は変えられません。というよりはdetail.show(閲覧画面を開いた時)にフィールドの値を変えるためには工夫がいります(編集画面のように比較的簡単に変えることができないという意味で、説明は端折りますがREST APIが必要です)。

 

これはそもそも、アクションボタンを押した時に 「それまで開いていたレコード」「アクションによって新しく開くレコード」 か、どちらを更新するためのものでしょうか。前者か後者かでカスタマイズは大幅に変わります。

前者であればREST APIで1件のレコードを更新するを実行する必要があり、後者であればアクション対象となるアプリにあるフィールドの初期値設定で何とかなるかもしれません(初期値の設定でない方法を取る場合、アクション対象となるアプリのcreate.showイベントでアクション実行時のみURLに「action=xxxxxxx」が含まれるのでそちらを参照するか、何らかのフィールドを参照するかで条件を指定してevent.recordを書き換える必要があります)。

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