REST API(複数キー指定)による値取得について(ご質問)

下図のようなアプリ構成において、ルックアップで取得した2つのフィールド値を検索キーとしたREST APIで他アプリの該当フィールド値を取得したいと思っております。

現在、下記コードで試しているのですが、REST APIに渡す複数キー検索パラメタの書き方が解からず、レコード検索がうまくいっておりません。

    const body = {app: apid, query: ('section_m = "' + record.section.value + '"') && ('position_m = "' + record.position.value + '"'),
                                      fields: ['checkitem_m']};
  kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body
    ,(resp) => {

恐れ入りますが、複数キー検索時のコードの書き方についてご助言頂けると幸甚です。

2つの項目を指定したクエリを書きたいという質問と理解しました。(アプリの内容は理解できませんでした。)

https://developer.cybozu.io/hc/ja/articles/201942004-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E4%B8%80%E8%A6%A7%E6%83%85%E5%A0%B1%E5%8F%96%E5%BE%97#step1

を参考に以下のような一覧を出すようにしました。フィールドコードは適当です。

kintone.app.getQuery();

をデベロッパーコンソールに入力しました。

'section = "AAAA" and position = "BBBB" order by レコード番号 desc limit 100 offset 0'

という結果を得ました。

&&ではなく andでつなぐようですね。()をくくるのも不要そうです。

harada

なるほど、このような確認の仕方があるのですね。参考になりました。
ところで、下記の通り、()を外し、&&をandにコードを修正して試しましたが、
「download.do:19 Uncaught SyntaxError: Unexpected identifier ‘and’」というシンタックスエラーとなってしまいます。

const body = {app: apid, query: 'section_m = "' + record.section.value + '"' and 'position_m = "' + record.position.value + '"',
                                       fields: ['checkitem_m']};
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body
,(resp) => {

正しいコードについてご助言いただけないでしょうか。

いろいろ難しいことをしようとしているみたいなので一歩一歩いきましょう。

「andという識別子を予期していませんでした」というエラーでした。

まず、クエリーの内容に

record.section.value

を差し込む方法を考えてみてください。record.section.valueだと扱いが面倒なので説明用にいったんsection_mという変数を差し込みたいとします。

const section_m = "AAAA"
'section_m = "' + section_m + '"'

‘section_m = “AAAA”’’

と表示されました。

'section_m = "' + section_m + '" and '

とすると

'section_m = “AAAA” and ’

と表示されました。あとはposition_mを付け加えればよいと思います。

また、「"」「'」の区切りはわかりづらいので テンプレートリテラルを使うというやり方もあります。

`section_m = "${section_m}" and position_m = "${position}"`

 

ブレイクポイント機能やconsole.log()で確認する。

長いクエリは、一番単純な形にして動くのを確認してから、長くしていくなどしていくとよいと思います。

遠回りのようですが結果的に悩む時間がすくなるなると思います。

kintoneカスタマイズの基本的なデバッグの流れを身につけよう – cybozu developer network
https://developer.cybozu.io/hc/ja/articles/360038920252-kintone%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E3%81%AE%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%81%AE%E6%B5%81%E3%82%8C%E3%82%92%E8%BA%AB%E3%81%AB%E3%81%A4%E3%81%91%E3%82%88%E3%81%86

harada様
下記コード内容で想定する動きとなりました。

const body = {app: apid, query: 'section_m = "' + record.section.value + '" and position_m = "' + record.position.value + '"',fields: ['checkitem_m']};
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body
,(resp) => {

ご助言ありがとうございました。

来週ぐらいの記憶が薄れかけた頃に

https://developer.cybozu.io/hc/ja/community/posts/13164944387993/comments/13202330087449

を読み直して見てください。

自分で答えを書いていることに気づくとおもいます。(理解してしまったあとに、理解する前の状況を思い出せないのかもしれません)

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