API経由でレコードを作成後、作成したレコードの詳細画面に遷移したい。

背景・実現したいこと

  1.  特定のボタンクリックでレコードの詳細画面から、値を抽出
  2.  1で抽出した一部の値を、新規レコードとしてPOST
  3.  2でPOSTしたレコードの詳細画面に遷移

という動作を実現したいです。

 

エラー情報 (開発者ツールのコンソール)

エラーは特に起きておりませんが、

  • 2でPOSTしたしたレコードの取得方法がわからない
  • 3の方法(遷移するほうほう)

がわからずにつまづいたままでおります。 

利用したソースコード

(() => {

  'use strict';

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

    //レコードのコピーボタンの設置
    constmyDetailButton = document.createElement('button');

    myDetailButton.id = 'my_detail_button';

    myDetailButton.innerText = 'レコードのコピー';

    myDetailButton.style.margin = '10px';

    // ボタンクリック時の処理

    myDetailButton.onclick = () => {

      constbody = {

        'app': kintone.app.getId(),

        'id': kintone.app.record.getId(),

        'fields': ['閲覧者', '閲覧日時', '主担当者', 'クライアント']

      };

      kintone.api(

        kintone.api.url('/k/v1/record.json', true), 'GET', body,

        (resp) => {

        // success

          constpostParams = {

            'app': kintone.app.getId(),

            'record': {

              //json形式でPOSTしたい値を入力
              'クライアント': {

                'value': resp.record.クライアント.value

              },
            '値1': {

            'value': resp.record.値1.value

            },

            '値2': {

            'value': resp.record.値2.value

            },
            }

          }

          // 値をPOST
          kintone.api(kintone.api.url('/k/v1/record.json', true), 'POST', postParams);

          console.log(resp.record);

          window.alert("登録が完了しました。");

          // 画面更新後、最新レコードを取得して遷移
          location.reload();

          kintone.api('/k/v1/records', 'GET', {

            app: kintone.app.getId(),

            query: 'order by レコード番号 desc limit 1'

          }, function (response) {

            if (1) { //条件式

              window.alert('id: ' + kintone.app.record.getId());

              location.href = location.href.replace("edit", "show#record=" + response.records[0].$id.value);
            }

          });

        }, (error) => {

          // error

          console.log(error);

          leterrmsg = 'レコード取得時にエラーが発生しました。';

          if (resp.message !== undefined) {

            errmsg += '' + resp.message;

          }

          window.alert(errmsg);

        },

      );

    };

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

  });

})();

【参考にしたURL】

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

 

上記を参考にするも、

・POSTしたレコードのIDを取得できない(GETしたレコードのIDが取得される)

・POSTしたレコードに遷移できない

という状態です。

 

お知恵を貸してくださいますと幸いです。

まずきになったのはここですね

          // 画面更新後、最新レコードを取得して遷移
        location.reload();

ブラウザのリロードがはしるのでそのあとのコードが実行されません。
また、その直後REST APIで最新データを取得するためにもやってるようですが、リロードせずともREST APIで取得できるのは最新のデータですのでその意味でもリロードは不要かとおもいます

他に原因はあるかもしれませんが少なくとも上記は直さないとうごかなさそうです。

ご確認いただきましてありがとうございます。

事前情報が不足しておりすみません。

// 画面更新後、最新レコードを取得して遷移
        location.reload();

実は投稿する以前に上記のコードを抜いた状態で実行をしましたが、うまくいきませんでした。

kintone.api('/k/v1/records','GET', {
            app: kintone.app.getId(),
            query:'order by レコード番号 desc limit 1'
          }, function (response) {
           if(1) {//条件式
             window.alert('id: '+ kintone.app.record.getId());
              location.href = location.href.replace("edit","show#record="+ response.records[0].$id.value);
            }
          });

上記で取得できているIDは、

kintone.api.url('/k/v1/record.json',true),'GET', body,
       (resp) =\>{ .....

↑で取得したIDが返ってきており、改善すべき点が見つけられずにおります。

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

無事期待どおりの動作をさせることができました。

 

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