教えてください。
let query = “”;
for (let i = 0; i < records.length; i++) {
if(i==0){
query = $id = "${records[i].id}"
;
} else {
query = ${query} or $id = "${records[i].id}"
;
}
}
上記の$id=1 or $id=2 ・・・ とquery文字列を繋げていった場合、どこかでエラーになるのでしょうか?
*文字数や条件数に上限等があるのでしょうか?
何を実現したいのかを書きましょう
発生した問題やエラーメッセージを具体的に書きましょう
実行したコードをコピー&ペーストしましょう
pomo
2023 年 11 月 25 日午前 5:20
2
特に上限記載なさそうですが、単純にURLが長すぎると414エラーになるのでそこが実質上限ですかね。
サンプルでボタンを表示して押下すると別タブで一覧開くように試したものです。200こレコードID繋げて検索してますが、数値あげていくとエラーになります。
const domain = "ドメイン名"
const appId = "アプリID"
const main = () => {
kintone.events.on("app.record.index.show", function (event) {
const list:string[] =[]
for(let i = 0; i < 200; i++){
list.push(`$id = ${i + 1}`)
}
const el = kintone.app.getHeaderMenuSpaceElement()
const button = document.createElement("button")
button.innerText = "test"
button.addEventListener("click",(()=>{
const query = `?query = ${list.join(" or ")}`
const url = `https://${domain}.cybozu.com/k/${appId}/${query}`
console.log(url)
window.open(url, "_blank")
}))
el?.appendChild(button)
return event;
});
}
main()
「いいね!」 1
mura
2023 年 11 月 26 日午後 3:47
3
パラメータにクエリを乗せる都合上、限界はありますが、APIの利用でしたら、上限は緩和できます(詳細↓)
GETではパラメーターに検索クエリを乗せる都合上、8kbをこえると発生するRequest URL Too Large エラーというのがありまして、2015年ごろに、その場合は「X-HTTP-Method-Override」に HTTP メソッドを指定して POST リクエストを送信するとその上限を超えてクエリを発行できる、というアップデートがあり、APIのクエリの上限はかなり緩和されました。(あくまでAPIの利用時で、pomoさんがされてるように一覧で見るだけだとその制限にかかるはずですが)
リファレンス: kintone REST API の共通仕様 - cybozu developer network
書いてある情報によれば、kintone.api()
を利用すると4kbを超えると自動でそのようになるようです。が、上限には触れてませんね。。流石に無制限、という気もしないので、どうしても気になるようであればAPIサポート窓口に問い合わせてみるといいかもしれません。
僕の経験としてはそれなりに長くても弾かれたことはまだないですが。
「いいね!」 1
おふたりとも、ご回答ありがとうございました。
公式には上限の記載がないこと確認でき大変助かりました。
api利用100件程度が上限になる想定ですので、一先ず現状のまま利用しエラーが発生した場合には対応検討したいと思います。
system
(system)
クローズされました:
2023 年 11 月 29 日午後 11:16
5
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。