こんにちわ。
GETメソッドで一覧のレコードが条件通り取得できずに困っています。
詳細はなります。
HTTPリクエストパラメータ
app・・・同一
fields・・・未設定
query・・・以下2パターン
(a)
・query=[フィールドコードA] like “[文字列A]-[文字列B]-[文字列C]-2014Z”
(b)
・query=[フィールドコードA] like “[文字列A]-[文字列B]-[文字列C]-”
※フィールドAに"[文字列A]-[文字列B]-[文字列C]-2014Z-01"のレコードあり
上記2パターンの条件を指定した際に(b)は一覧からレコードが取得できるのですが、(a)はレコードを取得できません。
likeで指定する文字列に数字が混在すると動作しないといった仕様があるのでしょうか。
ご教示お願い致します。
こんにちは。
大内@cstapです。
質問拝見して、まずいくつか気が付いたことがありましたのでそこからお知らせいたします。
検索対象にしているフィールドのタイプは日時/日付などでしょうか。
日時のフォーマットは以下に記述がありますので、見比べて書式が間違っていないか一度ご確認ください。
https://cybozudev.zendesk.com/hc/ja/articles/201941754-REST-API%E3%81%AE%E5%85%B1%E9%80%9A%E4%BB%95%E6%A7%98#step6
また、取得出来ないというのは、何かエラーが起きているのでしょうか。
それとも単なる0件Hitでしょうか。
APIからの戻りをご確認の上どのようなメッセージが返っているかお知らせください。
以下、ぱっと見た感じこれではないかそれぞれについて返答致します。
●エラーの場合
対象のフィールドタイプが作成日時/更新日時/日時/日付などの場合、like演算子は利用できません。
その場合、レスポンスボディには以下のようなJSONが返ります。
{ message: “日時フィールドのフィールドタイプには演算子likeを使用できません。”, id: “1505999166-935245545”, code: “GAIA_IQ03” }
●0件Hitの場合
実際にどのようなコードを書かれているのか分かりませんが、like演算子との比較文字列に%などワイルドカードをお忘れではないでしょうか。
以上、ご確認ください。
吉岡さま
先ほどの追伸です。
ご質問頂いていた内容については、そのような現象は確認できませんでした。
likeで指定する文字列に数字が混在すると動作しないといった仕様があるのでしょうか。
以下、検証に使った簡単なサンプルを添付しておきます。
ご覧の通り、一覧画面表示イベントでの取得結果/エラー内容をconsole.logに出力するようになっています。
リクエストパラメータ中のquery部を編集するなどしてお試し頂けますでしょうか。
(function () {
“use strict”;
kintone.events.on(‘app.record.index.show’, function (event){
// リクエストパラメータ
var requestParam = {
‘app’: kintone.app.getId(),
// ‘query’: ‘作成日時 = “2014-05-20T06:43:00Z”’
‘query’: ‘文字列_1行 like “%-hoge-123-%”’
};
kintone.api(
kintone.api.url('/k/v1/records', true),
'GET',
requestParam,
function(resp) {
console.log("get records success");
console.log(resp.records);
},
function(res) {
console.log("error!!");
console.log(res);
}
);
});
})();
大内様
返事が遅くなってしまい申し訳ございません。
ご教示頂いたソースを流用して、指定通りにレコードの取得ができるようになりました。
エンコードする部分の文字列指定で使用するダブルクォーテーションが原因でした。
お忙しい中、アドバイスをしていただきありがとうございます。
system
(system)
クローズされました:
5
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。