kintone.proxを利用したクエリで条件を指定したGETの記載方法について

お世話になっております。

 

①kintone.api を利用したレコード取得(GET)の記述を

②kintone.proxy にてAPIトークンを利用したレコード取得(GET)に変更しようと検討しております。

 

①kintone.apiでは正しくレコード取得が行われておりますが、

②kintone.proxy では、下記エラーが発生し、レコード取得に失敗している状況です。

 

*** <エラー> ***

520 

{code: “CB_IL02”, id: “34WOaAkyRKTuQs1jNwLm”, message: “不正なリクエストです。”} 

****************

 

おそらくkintone.proxyでの記載方法の誤りだと思いますが、

正しいkintone.proxを利用したクエリで条件を指定したGETの記載方法についてご教示いただけないでしょうか?

 

// ①kintone.api

(function() {

    “use strict”;

    

    // 詳細画面表示時に値取得

    kintone.events.on(‘app.record.detail.show’, function(event) {

        var record = event.record;

        var dt = record[‘作成日時’].value;

        // クエリ文の設定

        var paramGet  = {

            ‘app’: kintone.app.getId(),

            ‘query’: ‘作成日時 >= "’ + dt + ‘" order by レコード番号 desc limit 1’,

            ‘fields’: [‘レコード番号’]

        };

 

        kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, paramGet, function(resp) {

        // success

        console.log(resp);

        }, function(error) {

        // error

        console.log(error);

        });

    });

})();

 

// ②kintone.proxy

(function() {

    “use strict”;

    

    // 詳細画面表示時に値取得

    kintone.events.on(‘app.record.detail.show’, function(event) {

        

        var url = ‘https://<サブドメイン名>.cybozu.com/k/v1/records.json’;

        var headers = {

            ‘X-Cybozu-API-Token’:‘<APIトークン>’,

            ‘Content-Type’: ‘application/json’

        };

 

        var record = event.record;

        var dt = record[‘作成日時’].value;

 

        // クエリ文の設定

        var paramGet  = {

            ‘app’: kintone.app.getId(),

            ‘query’: ‘作成日時 >= "’ + dt + ‘" order by レコード番号 desc limit 1’,

             ‘fields’: [‘レコード番号’]

        };

        

        kintone.proxy(url, ‘GET’, headers, paramGet, function(body, status, headers) {

            console.log(status, JSON.parse(body), headers);

        }, function(error) { 

            console.log(error); 

        });

 

    });

})();

こんにちは。
コードを拝見しましたが、 kintone.proxy に乗せるパラメータの指定方法が間違っているようです。

kintone.proxy では以下のようにパラメータを指定することができます。
  > kintone.proxy(url, method, headers, data, callback, errback);

  1. headers について
    headers について application/json を記載しているためのエラーかと思います。
    今回はパラメータを JSON 形式で指定するわけではなく、HTTPのクエリ文字列で送信するため、
    指定する必要はないかと思います。
    共通仕様に「リクエストボディにJSON文字列を格納する場合のみ指定します。」と記載があります。

  2. data について
    data のパラメータについて、外部APIの実行 の記事の説明には、

> POST/PUTの場合のみ利用され、GET/DELETEの場合は無視されます。
> GET/DELETEの場合、URLのQueryStringにパラメータを乗せる必要があります。

と記載されています。

つまり、クエリ(変数 paramGet )はオブジェクトとして乗せるのではなく、URL の後ろに追加する形で指定する必要があります。
詳しい指定方法は、レコードの取得(GET)の「レコードの一括取得」の「リクエストの例」が参考になるかと思います。

 

以上です。試してみてください。

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