お世話になっております。
VBAでkintone APIを使ってレコードを取得する時に組織選択フィールドで絞り込みをする方法について質問させてください。
環境: ACCESS 2016
言語: VBA
XMLHTTPオブジェクトを生成して、リクエストボディを下記のようなjsonに設定しています。
{
“app”:1000,
“query”:“組織 in (/“●●/”, /“××/”, /“▲▲/”)”,
“fields”: [“ユーザー名”, “組織”]
}
想定では指定した組織の値が登録されているレコードが絞り込まれて取得されると思っておりますが、レスポンスは下記のようにエラーメッセージが返ってきます。
{
“code”:“GAIA_IL28”,
“id”:“GAsRJzNGeW4Ig9UUf6q4”,
“message”:“指定した組織(code:●●,××,▲▲)が見つかりません。”
}
in句ではなく"="で指定した場合も同じメッセージが返ってきます。
クエリの記法が間違っているのでしょうか?
ご教示お願いいたします。
REST APIのリクエストのトラブルシュートはクライアントを変えて比べてみる等まず何らかの方法で所望のリクエストを成功させることが先決です。Excel VBAで上手くいかないのであれば、まずはこちらにあるようなcURLコマンドやPOSTMAN等簡単な方法で成功させて、それをVBAで実行できるようにすると入った流れです。
また、出力されているエラーメッセージからすると、指定した組織コードが存在しないとそのままの意味のように思えます。こちらでコメントさせてもらっている方法でkintoneの画面上から所望の絞り込みを作ってそこで得られたクエリを指定するところから始めてみると良いかと思います。
所望のリクエストを一発で通せない時には、これらの組み合わせと積み上げから近づけて行くと良いと思います。
中村さん、Ryu Yamashita さん
横から失礼します。
組織選択フィールドの検索には、組織コードの指定が必要です。
ここは間違いやすいのですが、たぶん組織名を指定されているのではないかと思います。
組織追加時に、組織コードを指定しないと下記のように組織名とは別のコードが設定されます。
※ほかの組織と重複しない任意の文字列を入力します。 空にすると自動で設定されます。
実際に設定される組織コードは、組織名+ランダムな文字列のようです。
いまのところ、クエリで組織名は指定できないようです。
他で、組織コードを使っていなければ、組織コードを組織名と同じに変更するのもいいと思います。
あと、私が使っているクエリの確認方法をご紹介します。ブラウザのデバッグツールで手軽にクエリの確認・実行が出来ます。
・アプリの一覧画面を開いて、マニュアル操作で選択条件を指定して表示する
・ブラウザのコンソール画面で、「kintone.app.getQuery()」を実行
>“組織選択 in (” ORGANIZATION", 総務部_dxKWw1") order by ユーザ desc limit 40 offset 0"
組織選択の場合は、" ORGANIZATION" の指定がありますが、これは有っても無くても OK です
・ブラウザのコンソール画面で、「kintone.api(‘/k/v1/records’, ‘GET’, {app:97,query:‘組織選択 in ( “総務部_dxKWw1” )’ })」を実行
>Promise {<pending>}
展開すると、API結果が見えます
・network タブを見ると、API の送信データ・受信データが見やすく表示されます
Ryu Yamashitaさん rex0220さん
ご回答ありがとうございます。
こちらrexさんのご指摘の通り組織名で条件指定していました。
組織コードで当てるようにしたところうまくいきました。
クエリの確認方法のご教示もありがとうございます。
これから利用させていただきます。