Bir tarih aralığındaki siparişleri bulk operation ile dışa aktarma
Belirli bir tarih aralığındaki tüm Shopify siparişlerini satır kalemleriyle birlikte bulkOperationRunQuery ve orders filtresiyle JSONL dosyasına aktarın.
- API
- Admin GraphQL API
- İşlemler
- bulkOperationRunQuery, bulkOperation
- Erişim yetkileri
- read_orders; 60 günden eski siparişler için ek olarak read_all_orders
- Yerini aldığı REST çağrısı
- created_at_min ve created_at_max ile GET /admin/api/orders.json
- API sürümü
- 2026-10
- Son kontrol
Kısaca
Bir tarih aralığındaki siparişleri dışa aktarmak için created_at filtresi içeren bir orders sorgusunu bulkOperationRunQuery mutation’ına verin, durum COMPLETED olana kadar bulkOperation sorgusuyla takip edin ve url’deki JSONL dosyasını indirin. Satır kalemleri, __parentId taşıyan ayrı satırlar olarak gelir. Uygulamanızın read_orders yetkisine, 60 günden eski siparişler için ayrıca read_all_orders yetkisine ihtiyacı vardır.
Nasıl kullanılır
- orders sorgusunu created_at:>=2026-07-01 AND created_at:<2026-10-01 gibi bir arama filtresiyle yazın. İçine yalnızca ihtiyacınız olan alanları koyun.
- Sorguyu StartOrderExport’un query değişkeni olarak gönderin ve dönen bulk operation ID’sini saklayın.
- Durum COMPLETED olana kadar birkaç saniyede bir OrderExportStatus ile sorgulayın ya da bulk_operations/finish webhook’una abone olun.
- url’deki dosyayı indirip satır satır okuyun. Her satır kalemini __parentId ile siparişine bağlayın.
Kod
bulk-operation-run-query.graphqlmutation StartOrderExport($query: String!) {
bulkOperationRunQuery(query: $query) {
bulkOperation {
id
status
}
userErrors {
field
message
}
}
}
bulk-operation-run-query.variables.json{
"query": "{ orders(query: \"created_at:>=2026-07-01 AND created_at:<2026-10-01\", sortKey: CREATED_AT) { edges { node { id name createdAt displayFinancialStatus displayFulfillmentStatus currencyCode totalPriceSet { shopMoney { amount currencyCode } } lineItems { edges { node { id sku quantity originalUnitPriceSet { shopMoney { amount } } } } } } } } }"
}
bulk-operation-run-query.response.json{
"data": {
"bulkOperationRunQuery": {
"bulkOperation": {
"id": "gid://shopify/BulkOperation/1234567890",
"status": "CREATED"
},
"userErrors": []
}
}
}
bulk-operation-status.graphqlquery OrderExportStatus($id: ID!) {
bulkOperation(id: $id) {
id
status
errorCode
objectCount
rootObjectCount
url
partialDataUrl
}
}
bulk-operation-status.variables.json{
"id": "gid://shopify/BulkOperation/1234567890"
}
bulk-operation-status.response.json{
"data": {
"bulkOperation": {
"id": "gid://shopify/BulkOperation/1234567890",
"status": "COMPLETED",
"errorCode": null,
"objectCount": "15872",
"rootObjectCount": "4210",
"url": "https://storage.googleapis.com/shopify-tiers-assets-prod-us-east1/bulk-operation-outputs/example.jsonl",
"partialDataUrl": null
}
}
}
result.jsonl{"id":"gid://shopify/Order/1111111111","name":"#1001","createdAt":"2026-07-01T08:14:22Z","displayFinancialStatus":"PAID","displayFulfillmentStatus":"FULFILLED","currencyCode":"EUR","totalPriceSet":{"shopMoney":{"amount":"98.00","currencyCode":"EUR"}}}
{"id":"gid://shopify/LineItem/2222222222","sku":"LS-M","quantity":2,"originalUnitPriceSet":{"shopMoney":{"amount":"49.00"}},"__parentId":"gid://shopify/Order/1111111111"}
Lintel tarafından yazıldı. MIT lisansı: kendi mağazanızda da müşteri işlerinizde de ücretsiz kullanabilirsiniz.
Sınırlar ve özel durumlar
- read_all_orders olmadan yalnızca son 60 günde oluşturulan siparişler döner. Herkese açık uygulamalar bu yetki için Shopify onayı ister; Dev Dashboard’da kendi organizasyonunuzun mağazaları için oluşturulan uygulamalar istemez.
- Aralığın saniyesine kadar kesin olması gerekiyorsa filtreye tarih yerine created_at:>='2026-07-01T00:00:00Z' gibi tam bir ISO 8601 zaman damgası yazın.
- E-posta ve adres gibi müşteri alanları Shopify’ın korunan müşteri verisi (protected customer data) kurallarına tabidir. Bu alanları sorguya eklemeden önce erişim izni alın.
- rootObjectCount yalnızca siparişleri sayar; objectCount satır kalemlerini de sayar.
Sık sorulan sorular
- Shopify siparişlerini GraphQL ile tarihe göre nasıl dışa aktarırım?
- created_at ile filtrelenmiş bir orders bağlantısıyla bulkOperationRunQuery çalıştırın, işlemin bitmesini bekleyin ve JSONL dosyasını indirin. Birkaç yüz sipariş için aynı filtreyle sayfalanan bir orders sorgusu yeterlidir.
- Dışa aktarım neden 60 günde kesiliyor?
- read_orders yalnızca son 60 günde oluşturulan siparişleri kapsar. Daha eski siparişleri okumak için yanına read_all_orders yetkisini de isteyin.
- Oluşturulma tarihi yerine güncellenme tarihine göre filtreleyebilir miyim?
- Evet. orders sorgusu updated_at ve processed_at filtrelerini de kabul eder; yalnızca değişen siparişleri alan artımlı senkronizasyonlar için uygundur.
- JSONL dosyasını nasıl CSV’ye çeviririm?
- Dosyayı satır satır okuyun, siparişleri id’ye göre bir map’te tutun, her satır kalemini __parentId ile siparişine ekleyin; ardından sipariş ya da satır kalemi başına bir CSV satırı yazın.
Shopify belgeleri
- Gösterilen tarihte, 2026-10 sürümünün Admin veya Storefront API şemasıyla doğrulandı. İstek adresinizdeki sürümü kontrol edin.
- Örneklerdeki ID’ler ve mağaza adresleri yer tutucudur. Kendi değerlerinizle değiştirin.
- Admin API çağrıları uygulamanızdan bir erişim anahtarı (access token) ister. Admin API anahtarını asla vitrine ya da temaya koymayın.
- MIT lisansı. Kodu kendi mağazanızda da müşteri işlerinizde de kullanabilirsiniz.
Mağazanız için kurulmasını, test edilmesini ve bakımını isterseniz: API entegrasyonları.
