ルックアップ元のテーブルをルックアップ先に表示させたい

ルックアップ元のテーブルをルックアップ先に表示させたいと思っています。

ルックアップ自体は、基本機能(文字列(1行))で正常動作しています。

下記を参考にしましたが、元々レコード番号で指定しているものを文字列にした為エラーになっている気がします。

https://developer.cybozu.io/hc/ja/articles/900001314606-kintone-%E3%81%AE%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%88%A5%E3%82%A2%E3%83%97%E3%83%AA%E3%81%8B%E3%82%89%E5%8F%82%E7%85%A7%E3%81%97%E3%82%88%E3%81%86 

 

コンソールのエラー情報は、下記の通りです。

『GET アドレス 400 (Bad Request)』

『クエリ記法が間違っています。』

 

色々調べてみましたが自分で解決できなかったのでご教授お願い致します。 

 

//会社情報アプリの情報取得
(function() {
  'use strict';

  kintone.events.on('app.record.detail.show', function(event) {
    
    //会社情報アプリのID取得
    const 会社情報アプリID= kintone.app.getLookupTargetAppId('管理会社名'); 

  // 「物件情報アプリ」で利用する「管理会社名」を取得
    var 管理会社名 = event["record"]["管理会社名"]["value"];

  // フィールドコードを変数に格納
    var 管理会社情報 = '会社情報';  //テーブル名
    var 管理会社支店名 = '支店名';
    var 管理会社郵便番号 = '郵便番号';
    var 管理会社住所 = '住所';
    var 管理会社TEL = 'TEL';
    var 管理会社FAX = 'FAX';

  // 「物件情報アプリ」で情報を表示する表を作成
    var tableHtml = '<thead><tr>' +
        '<th> ' + 管理会社支店名 + ' </th>' +
        '<th> ' + 管理会社郵便番号 + ' </th>' +
        '<th> ' + 管理会社住所 + ' </th>' +
        '<th> ' + 管理会社TEL + ' </th>' +
        '<th> ' + 管理会社FAX + ' </th>' +
        '</tr>' +
        '</thead>' +
        '</tbody>';

    // スペースフィールドに作成した表を表示
    var tableEl = document.createElement('table');
    tableEl.id = 'table';
    tableEl.border = '1';
    tableEl.style.textAlign = 'center';
    tableEl.style.padding = '10px';
    tableEl.insertAdjacentHTML('afterbegin', tableHtml);
    kintone.app.record.getSpaceElement('company').appendChild(tableEl);

    // 「会社情報アプリ」から「会社名」が同じレコードを取得
    var params = {
      'app': 会社情報アプリID,
      'fields': '会社名',
      'query': '会社名 = "' + 管理会社名 + "'" 
    };
    console.log(params)

    return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params).then(function(resp) {

      var companyAppRecords = resp.records[0];

      // 同じ「会社名」のレコードが「会社情報アプリ」に存在しないときにエラーを表示
      if (companyAppRecords.length === 0) {
        window.alert('「会社情報アプリ」に同じ「会社名」のレコードがないため、「会社情報」テーブルのデータを表示できません。');
        return event;
      }

      // 取得した「会社情報アプリ」のテーブルデータを作成した表に格納
      var tableRows = companyAppRecords[0][管理会社情報].value;
      var tableRef = document.getElementById('table');

      tableRows.forEach(function(row) {
        var tableRow = tableRef.insertRow(-1);
        var cell1 = tableRow.insertCell(-1);
        var cell2 = tableRow.insertCell(-1);
        var cell3 = tableRow.insertCell(-1);
        var cell4 = tableRow.insertCell(-1);
        var cell5 = tableRow.insertCell(-1);

        cell1.appendChild(document.createTextNode(row.value[管理会社支店名].value));
        cell2.appendChild(document.createTextNode(row.value[管理会社郵便番号].value));
        cell3.appendChild(document.createTextNode(row.value[管理会社住所].value));
        cell4.appendChild(document.createTextNode(row.value[管理会社TEL].value));
        cell5.appendChild(document.createTextNode(row.value[管理会社FAX].value));
      });

      return event;

    }).catch(function(error) {
      // エラー表示をする
      window.alert('エラーが起こりました。エラーメッセージ:' + error.message);
      return event;
  });
  });
})();

参考URLのサンプルは、

    var params = {
      'app': APP_ID,
      'query': '出張申請番号 = ' + applicationNumber
    };

でした。

    var params = {
      'app': 会社情報アプリID,
      'fields': '会社名',
      'query': '会社名 = "' + 管理会社名 + "'" 
    };

とあります。‘fields’: ‘会社名’,を削除したらどうなりますでしょうか?

 

横からすみません。

‘query’: ‘会社名 = "’ + 管理会社名 + “'” 

最後、ダブルクオーテーションで開いてシングルクオーテーションで閉じているところではないでしょうか??

失礼しました。

手元で再現している方は、

query: '会社名 = "' + 管理会社名 + '"'

になっておりました。VScodeが自動で修正したわけでもないないようでした。気づかないうちに直してしまったのかもしれません。

harada

‘fields’: ‘会社名’, は、後から追加しましたが、関係ないようです。

juridon

ダブルクォーテーション、シングルクォーテーションの箇所は気づきませんでした。

ありがとうございます。

ただ、そこを修正したら新たなエラーが・・・

 

Cannot read properties of undefined(reading ‘会社情報’)

 

ルックアップ元のテーブルのフィールドコードは『会社情報』になっていますが、

設定がおかしいのか・・・?

もう少しいじってみようと思います。

自己解決しました。

他に検索する人がいるかもしれないので、私の解決方法を記載します。

 

まず、↓の部分でレコードIDを指定してあげなければいけない所を文字列検索してしまったので、

文字列のみの情報となり、その後のレコード内のテーブル情報を取得できなかったようです。

 

    var params = {
      'app': 会社情報アプリID,
      'fields': '会社名',
      'query': '会社名 = "' + 管理会社名 + "'" 
};

 

なので、ルックアップ元にレコード番号を追加し、ルックアップ先のルックアップ時にレコード番号取得、

上記のapp以外を削除し、下記を追加しました。

 

'query': 'レコード番号' = レコード番号

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