詳細画面に設置したボタンでラジオボタンを更新したい

ボタンを設置し、クリックしたとき行動種別のラジオボタンを変更したいと考えております。

getしたフィールドの扱いがわからず、IF文のところでエラーを吐きます。

正しい記述方法をご教示ください。

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

(function ()

{

  ‘use strict’;

  kintone.events.on(‘app.record.detail.show’, function (event)

  {

    var myMenuButton = document.createElement(‘button’);

    myMenuButton.id = ‘my_menu_button’;

    myMenuButton.innerHTML = ‘更新’;

    myMenuButton.onclick = function ()

    {

      var record = kintone.app.record.getFieldElement(‘行動種別’);

      if (record === ‘未割当’) { //行動種別が未割当の時、割当にする

        record[‘行動種別’][‘value’] = ‘割当’;

      }

      kintone.app.record.set(record);

    }

    kintone.app.record.getHeaderMenuSpaceElement().appendChild(myMenuButton);

  });

})();

mionix さん

はじめまして。ひよこです。

「行動種別が未割当か?」を判定したいので、「 行動種別が 」の部分が足りてないですね。

そもそもなんですが、レコードの値をとってくるための API がちょっと異なるようです。

kintone.app.record.getFieldElement() は、そのフィールドのHTML要素を取得する API で、背景色を変えるときなどに利用します。
表示されているレコードの値を取得したいときは、レコードの詳細画面を開いたイベントで渡されてくる event.record の値を使います。

また、レコードの追加画面や編集画面の場合、フォームの内容に反映して、人が「保存」ボタンを押してデータを更新できるんですが、
詳細画面の場合、レコードの値を更新するには REST API が必要です。
参考:https://developer.cybozu.io/hc/ja/articles/204537310

REST API の処理は書いていませんが、こんな感じになるかと思います。

kintone.events.on('app.record.detail.show', function (event) {

var record = event.record; // ここに表示されているレコードの情報が入っている

var myMenuButton = document.createElement('button');
myMenuButton.id = 'my_menu_button';
myMenuButton.innerHTML = '更新';
myMenuButton.onclick = function (){
if (record['行動種別']['value'] === '未割当') {  // 行動種別の値は record['行動種別']['value'] で取得できる
// ここに REST API を使ってレコードを更新する処理を書く
}
return event;
});

やりたいことを実現するためには、JavaScript API でできるのか、REST API でできるのか、
「はじめよう kintone API https://developer.cybozu.io/hc/ja/articles/211029283 」を通してやってみるとイメージが付きやすいのでおすすめです!

ひよこ様

お世話になっております。

大変わかりやすくご教示頂き誠にありがとうございます。

自分なりにコードを書いてみたのですが、ボタンを押しても値が変わりません・・・

見ていただけないでしょうか。

何卒、よろしくお願いいたします。

(function ()

{

  ‘use strict’;

  var putRecord = function (recordId, statusVal)

  {

    var params = {

      app: 23,

      id: recordId,

      record: {

        ‘行動種別’: {

          value: statusVal

        }

      }

    };

    return kintone.api(kintone.api.url(‘/k/v1/record’), ‘PUT’, params)

      .then(function (resp)

      {

        alert(‘スケジュールのステータスを変更しました。’);

      });

  };

  kintone.events.on(‘app.record.detail.show’, function (event)

  {

    var record = event.record; // ここに表示されているレコードの情報が入っている

    var ProjectNum = event.recordId;

    var StatusA;

    var StatusB = record[‘行動種別’][‘value’];

    var myMenuButton = document.createElement(‘button’);

    myMenuButton.id = ‘my_menu_button’;

    myMenuButton.innerHTML = ‘更新’;

    myMenuButton.onclick = function ()

    {

      if (StatusB === ‘未割当’) { // 行動種別の値が入っている変数StatusB

        // ここに REST API を使ってレコードを更新する処理を書く

        StatusA = ‘割当’;

      }

      return putRecord(ProjectNum, StatusA);

    };

    kintone.app.record.getHeaderMenuSpaceElement().appendChild(myMenuButton);

  });

})();

ひよこ様

お世話になっております。

上記の件ですが、コードではなくフィールドの設定でエラーを吐いておりました。

無事、ご教示頂いた内容で実装することができました。

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

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