完了した注文を ShopifyAPI::Order.All に含める

概要

Shopify アプリケーションの一部として、すべての注文のローカル エクスポートを保持したいと考えています。ここで必要なことのほとんどを実現する Ruby スクリプトがありますが、それは未履行の注文を取得するだけです。

次のようなパラメータを追加して、ShopifyAPI::Order.allを微調整してみました

fullfilled_orders=ShopifyAPI::Order.all(params: { ステータス: ‘任意’, フルフィルメントステータス: ‘フルフィルド’})

両方のフィールドで「any」と「fulfilled」のバリエーションを試し、パラメータなしで実行しても、出力は同じままです。

アプリケーションにはストアの設定ページで可能なすべての権限があり、Ruby のアプリケーション スコープはこれに設定されています。

スコープ: ‘read_all_orders read_orders read_customers read_users’,

これが関数のスニペットです

def order_dl()
    # Load API credentials from file
    config = YAML.load_file('config.yml')


    # Shopify API credentials
    session = ShopifyAPI::Auth::Session.new(
    shop: config['shop'],
    access_token: config['access_token'],
    )

    ShopifyAPI::Context.setup(
    api_key: config['api_key'],
    api_secret_key: config['api_secret_key'],
    api_version: '2024-01', # Example: '2024-01'
    scope: 'read_all_orders read_orders read_customers read_users',
    is_private: false, # Set to true if you are using a private app
    is_embedded: true # Set to true if you are using an embedded app
    )

    ShopifyAPI::Context.activate_session(session)

    client = ShopifyAPI::Clients::Rest::Admin.new(
    session: session
    )
    test_session = ShopifyAPI::Context.active_session


    #retrieve order details
    orders = ShopifyAPI::Order.all(params: { status: 'any', fulfillment_status: 'any'})
    infos=[]

解決策

オプションを間違って渡しているようです。ドキュメントによると、status とfulfillment_statusはキーワード引数であり、次のように渡す必要があります。

ShopifyAPI::Order.all( status: 'any', fulfillment_status: 'any')

デフォルトでは最初の 50 件のみが取得されることに注意してください。 API ドキュメント。

limit: 250; を使用して制限を 250 に設定できます。ただし、一度に 250 レコードを超えるレコードを取得することはできないため、すべてのレコードを実際に受信するには、since または updated_at_min のようなオフセットを使用してこのプロセスを複数回ループする必要がある場合があります。