レコード追加画面でのボタン押下時の処理

下記の内容を元にユーザー選択フィールドに自分自身を追加したいと考えているのですが、一度保存した詳細画面や編集画面ではボタンを押すと自分を追加することができるのですが、レコード追加画面(新規の場合)だとボタンを押しても反応しません。

レコード詳細画面でワンクリックで担当者に自分を追加するワザ

どうすればレコード追加画面でも追加することが可能でしょうか?
よろしくお願い致します。

 

(function() {
    "use strict";

    //グローバル変数 memberを定義
    var member;

    //レコードの追加、編集、詳細画面で適用する
    var events = ['app.record.create.show',
                  'app.record.edit.show',
                  'mobile.app.record.detail.show',
                  'mobile.app.record.create.show',
                  'mobile.app.record.edit.show'];

    kintone.events.on(events, function(event) {
      member = event['record']['立会者名']['value'];
      
      //スペース要素の取得
      var se = kintone.app.record.getSpaceElement('btnspace');
      
      //ボタンの作成
      var btn = document.createElement('button');
      btn.appendChild(document.createTextNode(' セルフチェック '));
      btn.id = 'btnAddMine'; 
      btn.name = 'btnAddMine';
      se.appendChild(btn);
      btn.style.marginTop = '30px';
      
      btn.addEventListener('click', addMemberMine);
      
    });
    
    
  function addMemberMine() {

     //ログインユーザの情報を取得
     var loginuser = kintone.getLoginUser();
     
     var objParam = {};
     
     objParam['app'] = kintone.app.getId();       // アプリ番号
     objParam['id'] = kintone.app.record.getId(); // レコード番号
     objParam['record'] = {};
     objParam['record']['立会者名'] = {};
     objParam['record']['立会者名']['value'] = [];
     
     // すでに担当者になっているメンバーを追加する
     for (var i = 0; i < member.length; i++) {
         objParam['record']['立会者名']['value'][i] = {};
         objParam['record']['立会者名']['value'][i]['code'] = {};
         objParam['record']['立会者名']['value'][i]['code'] = member[i]['code'];
     }

     //ログインユーザを追加する
     objParam['record']['立会者名']['value'][member.length] = {};
     objParam['record']['立会者名']['value'][member.length]['code'] = {};
     objParam['record']['立会者名']['value'][member.length]['code'] = loginuser.code;

     // レコードを更新する
     kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', objParam, function(resp) {
         // 成功時は画面をリロード
         location.reload(true);
     });
   }

})();

SK さん

こんにちは。

ボタンを押しても反応しないとき、ブラウザの開発者コンソールになにかエラーは出ていますか?
エラーが出ている場合、解決するための手がかりになります。

開発者ツールのコンソールの確認の仕方は以下の記事が参考になります。

動かない?そんな時はデバッグをしてみよう!入門編

kzzz 様
コメント、ありがとうございます。
ブラウザの開発者コンソールで確認すると、“PUT https://(ドメイン名).cybozu.com/k/v1/record.json” と表示されています。
詳細を見ると、以下の内容が書かれていました。
よろしくお願い致します。

SK さん

エラー情報ありがとうございます。

PUT https://(ドメイン名).cybozu.com/k/v1/record.json の部分で

更新するレコードを、「id」か「updateKey」のいずれかのパラメーターで指定する必要があります。

とあるのできちんと id か updateKey が設定されているか確認するとよさそうですね。

本質問の一番最初に貼ってくださったソースコードを確認すると、以下の部分で PUT を実行しています。

// レコードを更新する
     kintone.api(kintone.api.url('/k/v1/record',true),'PUT', objParam,function(resp) {

レコードの更新 API はリクエストパラメータに id または updateKey を指定する必要があります。

リクエストパラメータはソースコードの中だと「objParam」が該当します。

リクエストパラメータの表にある「必須」の部分は必ず「objParam」の中に書いておかなければいけませんが、
今回は書かれていないのでエラーになっています。

必要な情報を書き加えて修正してみてください。

 

こんにちは。横から失礼します。

レコード追加画面は、まだレコードを保存していない状態のため PUT での更新ができないと思います。

そのため、REST API 以外の方法を使えば実現できるのではないでしょうか?

以下の記事が参考になると思うので、よかったら読んでみてください!

https://developer.cybozu.io/hc/ja/articles/201942014

kzzz 様
ありがとうございます。
レコード詳細画面では正常に動作していたので、ponyoさんの言う通り、レコード追加画面では難しいんでしょうかね?
(レコード追加画面ではidが付与されていないから?)

ponyo 様
情報ありがとうございます。
REST API 以外での更新となると、リンク先記事のレコードの値を取得するkintone.app.record.get()を使用するということでしょうか?

SK さん

はい、ご認識の通りです。

念のため一度リンクでお送りしたドキュメントの記載を見ていただきたいのですが、

kintone.app.record.get() を使用するとレコード追加画面で編集中のデータを取得できるようになっていると思います!

ponyo 様
リンク先のドキュメントを見て、kintone.app.record.get() を使用することは理解したのですが、
どう書けばいいのかがわかりません。もしよろしければご教示頂けると大変助かります。
よろしくお願い致します。