ShopifyのRuby Gemを使用して、スマートコレクションをプロダクトストアに編成しています。基本的には、これらのコレクションの製品オーダーを夜間に更新しようとしています(ソート順は手動に設定されています)。目標は、販売データに基づいて製品をソートすることですが、リストの最後に在庫切れ品を置くこともあります。Shopify API - 何千もの製品でSmart Collectionの製品注文を更新するにはどうすればよいですか?
私はほとんどのコレクションにうまく機能するスクリプトを作成するために管理:
@scs = ShopifyAPI::SmartCollection.find(:all,params: {limit: 250})
@scs.each do |sc|
sc.order(products: @products_in_order)
sc.save
end
残念ながらコレクションは数百の製品よりも大きい場合には、URIが長くなりすぎ、私はこのエラーを取得:
をActiveResource::ClientError: Failed. Response code = 414. Response message = Request-URI Too Large.
大規模なスマートコレクションで効率的に製品の注文を更新する方法はありますか?私のコレクションの中には1000以上の製品があります。毎日このスクリプトを実行するので、個々の「収集」を個別に更新する必要はありません。
アドバイスありがとうございます。
こんにちはDavid、ご返信ありがとうございます。私はすべての製品を引き出す。上記の制限はコレクションのクエリです(私はコレクションが250個未満です)。変数@products_in_orderには、コレクション内のすべての製品が含まれます。問題は、何百もの製品がある場合、API呼び出しのURIが長くなりすぎることです。何千もの製品と何百ものコレクションがある場合を除いて、ソート順の製品を割り当てる問題はありません。 1日に30,000回のAPIコールを使用しているため、リソースの賢明な使用のようには見えません。 –
なぜあなたはこれをやりたいのですか? 1000sの製品を含むコレクションは、とにかく扱いにくいものになります(顧客はそれらをすべてページするつもりはありません)。とにかく、コードが壊れているように聞こえます。更新による順序はPUTでなければならないので、URIの長さを考慮する必要はありません。それが実際で、エラーがShopifyによって誤ってラベル付けされている場合、バッチで更新を行うとどうなりますか? 100のグループを適用すると、100の製品IDの2番目のグループを適用するとどうなりますか? – bknights