REST API

E-tablolar

Google Sheets, XLSX veya CSV girdisini hesabınıza atfedilen bir XLSX çalışma kitabına dönüştürün.

Hesabınızın bearer belirtecini kullanarak bir Google E-Tablosundaki veya yüklenen çalışma kitabındaki bağlantıları dönüştürün. CSV girdisi için bile çıktı her zaman .xlsx olur. Bağlantılar, Bağlantılar sayfasında açıklandığı gibi hesabınıza atfedilerek ve isteğe bağlı campaign ve label ile yerinde değiştirilir.

Google E-Tablosu girdisi

NinjaBuy’ın okuyabildiği bir Google Sheets URL’si gönderin. Dönüştürme yalnızca görüntülenen önizlemeyi değil her sekmeyi okur ve bu iş için sabit bir anlık görüntü oluşturur.

curl -sS -D sheet-headers.txt https://www.ninjabuy.com/api/v1/sheets \
  -H "Authorization: Bearer $NINJABUY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"url":"https://docs.google.com/spreadsheets/d/SHEET_ID/edit","campaign":"spring-haul","label":"finds"}'

XLSX veya CSV girdisi

Önce bir yükleme ayırın. filename, .xlsx veya .csv ile bitmeli ve baştaki ve sondaki boşluklar kırpıldıktan sonra 1 ile 255 karakter içermelidir. bytes, 1 ile 20.971.520 arasında, dosyanın bayt cinsinden tam boyutudur.

curl -sS https://www.ninjabuy.com/api/v1/uploads \
  -H "Authorization: Bearer $NINJABUY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"filename":"finds.xlsx","bytes":12345}'

201 yanıtı upload_id, imzalı PUT url, expires_at (Unix başlangıcından itibaren milisaniye), max_bytes ve request_id içerir. Ayırma 15 dakika sonra sona erer. Ham dosyayı döndürülen URL’ye PUT ile gönderin, ardından yükleme kimliğini gönderin:

curl --fail-with-body -X PUT "$UPLOAD_URL" \
  --data-binary @finds.xlsx

curl -sS -D sheet-headers.txt https://www.ninjabuy.com/api/v1/sheets \
  -H "Authorization: Bearer $NINJABUY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"upload_id":"UPLOAD_ID","campaign":"spring-haul","label":"finds"}'

Doğrudan PUT, depolama hizmetinin yanıt sözleşmesini kullanır. NinjaBuy, dönüştürmeyi gönderdiğinizde yüklenen baytları doğrular. Bilinmeyen veya başka hesaplara ait yükleme kimlikleri 404 döndürür. Depolanan nesne, bildirilen bayt sayısıyla eşleşmelidir; bildirilen boyuttan veya üst sınırdan büyük bir nesne 413 upload-too-large, daha küçük (kesilmiş) bir nesne ise bayt sayısı uyuşmazlığı açıklamasıyla 422 invalid-workbook döndürür. Bu kontroller indirmeden önce yapılır ve meta veri kontrolünden sonra baytlar değişirse de uygulanır. Reddedilen ham yüklemeler silinir; kabul edilen ham yüklemeler ise doğrulanmış anlık görüntüleri kaydedildiğinde silinir.

Tam olarak bir kaynak gönderin: url veya upload_id. İkisi de isteğe bağlı campaign ve label kabul eder; async alanı gerekmez. Her iki POST rotası da Idempotency-Key kabul eder ve her biri paylaşılan dakikada 30 oluşturma penceresinden bir çağrı tüketir. Alt bağlantı dönüştürmeleri ek çağrı tüketmez.

İş ve indirme

E-tablo gönderimi, Location: /api/v1/jobs/JOB_ID, Retry-After: 5 ve bu gövdeyle 202 döndürür:

{
  "job": {
    "id": "JOB_ID",
    "kind": "sheet_conversion",
    "status": "queued",
    "poll_after_seconds": 5
  },
  "request_id": "REQUEST_ID"
}

poll_after_seconds değerine uyarak done veya failed olana kadar aynı hesabın belirteciyle İşleri sorgulayın. Tamamlanan job.result, kind: "sheet_conversion", counts ve 15 dakika geçerli imzalı download_url içerir. Yeni bir indirme imzası almak için tekrar sorgulayın. Başarısız işte error bulunur ve kısmi indirme sunulmaz.

Bir Google E-Tablosu için job.result ayrıca copy_url içerebilir: bağlantılarınızın yerine konduğu, Google E-Tablolar'daki birebir kopyaya salt görüntüleme bağlantısı; bağlantıya sahip olan herkes Dosya → Kopya oluştur ile kendi kopyasını saklayabilir. copy_notes, bu kopyayı okuyan kişinin bilmesi gerekenleri listeler; örneğin =IMAGE() ile oluşturulan resimler kendi kopyasında bir kez Erişime izin ver tıklaması gerektirir. download_url XLSX dosyasını döndürmeye devam eder. copy_counts kopya için aynı sayımları verir; XLSX oluşturulamazsa sonuçta copy_url kalır, download_url bulunmaz ve copy_notes nedenini açıklar. download_notes, XLSX dosyasının tablodan tutamadıklarını satır satır listeler; örneğin grafikler veya bir hücredeki ikinci bağlantı.

Anlık görüntüler ve sonuç dosyaları, iş tamamlandıktan veya başarısız olduktan sonra yedi gün boyunca saklanır. Temizlikten sonra iş, durumu ve sayaçlarıyla okunabilir kalır ancak job.result.download_url alanı döndürülmez. Paylaşılan anlık görüntüler, başka bir iş bunlara ihtiyaç duyduğu sürece korunur. Terk edilmiş ham yüklemeler, yükleme ayırmanın süresi dolduktan bir saat sonra silinir; hiç iş başlatmayan doğrulanmış bir yüklemenin anlık görüntüsü, ayırmanın süresi dolduktan yedi gün sonra silinir. Temizlik saatte bir çalışır.

SayaçAnlamı
links_foundYinelenen hedefler dâhil bulunan bağlantı sayısı.
convertedHesabınıza atfedilen bağlantılarla değiştirilen bağlantı sayısı.
left_by_hostBilerek değiştirilmeden bırakılan bağlantıların ana makineye göre sayıları.
unresolvedDönüştürülemeyen ve değiştirilmeden kalan bağlantı sayısı.
unresolved_examplesÇözümlenemeyen URL örnekleri.
coverage_gapEksik dönüştürme yanıtları; üretilen dosyada her zaman 0.

Kapsama links_found = converted + sum(left_by_host) + unresolved eşitliğini sağlar. Sosyal bağlantılar, Google Sheets bağlantıları, aynı çalışma kitabı içindeki gezinme ve mevcut NinjaBuy bağlantıları değişmeden kalır. Çıktı yazılmadan önce dönüştürülecek her aday için yanıt alınmalıdır; eksik yanıtlar işin başarısız olmasına neden olur.

Çalışma kitabında korunanlar

Çıktı, ayrıştırılmış ızgarada temsil edilen stilleri, birleştirmeleri, satır ve sütun boyutlarını ve resimleri korur. Zengin metin parçaları, hücre köprüsü olmayan hücrelerde korunur; bağlantılı hücreler tek bir metin etiketi ve köprü kullanır. Çalışma kitabı yeniden serileştirilir: grafikler, makrolar ve bu ızgara dışındaki diğer özellikler korunmaz.

XLSX, hücre başına bir köprü destekler. Dönüştürme, yanına ikinci bağlantı eklemek yerine bağlantıları yerinde değiştirir. Resim dışı iki veya daha fazla farklı bağlantı hedefi içeren hücre, ilkini köprü olarak tutar ve diğerlerini hücrenin notunda listeler; böylece hiçbir hedef kaybolmaz.

Sınırlar

KaynakÜst sınır
Yüklenen XLSX veya CSV dosyası20 MiB; bildirilen bayt sayısıyla eşleşmelidir
Açılmış XLSX veya birleştirilmiş Google kaynak HTML’si64 MiB
Dönüştürme genelindeki hücreler500.000
Tekrarlar dâhil bulunan bağlantı sayısı100.000
Her resim10 MiB
Korunan benzersiz resimlerin toplamı32 MiB
Serileştirilmiş XLSX çıktısı64 MiB
Yükleme ayırma / indirme imzasıHer biri 15 dakika

Ayrıştırıcı veya yazıcı sınırının aşılması açıkça başarısızlıkla sonuçlanır. invalid-workbook, upload-expired ve upload-too-large için Hatalar sayfasına bakın.