REST API

Arkusze

Konwertuj Google Sheets, XLSX lub CSV na skoroszyt XLSX z przypisanymi linkami.

Konwertuj linki w arkuszu Google lub przesłanym skoroszycie, używając tokenu bearer twojego konta. Wynik zawsze ma format .xlsx, także dla CSV. Linki są zastępowane w miejscu, z przypisaniem do twojego konta i opcjonalnymi campaign i label opisanymi w Linkach.

Arkusz Google jako źródło

Prześlij URL Google Sheets, który NinjaBuy może odczytać. Konwersja odczytuje wszystkie karty, nie tylko podgląd, i zapisuje migawkę dla tego zadania.

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 lub CSV jako źródło

Najpierw zarezerwuj przesyłanie. filename musi kończyć się na .xlsx lub .csv i zawierać od 1 do 255 znaków po usunięciu otaczających spacji. bytes to dokładny rozmiar pliku w bajtach, od 1 do 20 971 520.

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}'

Odpowiedź 201 zawiera upload_id, podpisany adres PUT url, expires_at (milisekundy od epoki Unix), max_bytes i request_id. Rezerwacja wygasa po 15 minutach. Wyślij surowy plik metodą PUT na zwrócony URL, a następnie prześlij identyfikator:

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"}'

Bezpośredni PUT korzysta z formatu odpowiedzi usługi przechowywania. NinjaBuy sprawdza przesłane bajty przy zgłaszaniu konwersji. Nieznane identyfikatory i identyfikatory innych kont zwracają 404. Zapisany obiekt musi odpowiadać zadeklarowanej liczbie bajtów; obiekt większy od zadeklarowanego rozmiaru lub przekraczający limit zwraca 413 upload-too-large, a mniejszy (ucięty) obiekt zwraca 422 invalid-workbook z wyjaśnieniem niezgodności liczby bajtów. Te kontrole odbywają się przed pobraniem i obowiązują również wtedy, gdy bajty zmienią się po sprawdzeniu metadanych. Odrzucone surowe pliki są usuwane, a zaakceptowane surowe pliki są usuwane po zapisaniu ich zweryfikowanej migawki.

Podaj dokładnie jedno źródło: url lub upload_id. Oba przyjmują opcjonalne campaign i label; async nie jest potrzebne. Obie trasy POST obsługują Idempotency-Key i zużywają po jednym miejscu we wspólnym limicie 30 wywołań na minutę. Podrzędne konwersje linków nie zużywają dodatkowych miejsc.

Zadanie i pobieranie

Zgłoszenie arkusza zwraca 202 z Location: /api/v1/jobs/JOB_ID, Retry-After: 5 i treścią:

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

Odpytuj Zadania tokenem tego samego konta do stanu done lub failed, przestrzegając poll_after_seconds. Zakończone job.result zawiera kind: "sheet_conversion", counts i podpisany download_url ważny przez 15 minut. Odpytaj ponownie, aby otrzymać nowy podpis pobierania. Nieudane zadanie zawiera error i nie udostępnia częściowego pliku.

W przypadku arkusza Google job.result może też zawierać copy_url: link tylko do odczytu do dokładnej kopii w Arkuszach Google z Twoimi linkami na ich miejscu; każdy, kto ma link, może zachować własną kopię przez Plik → Utwórz kopię. copy_notes wymienia to, co powinien wiedzieć czytelnik tej kopii, na przykład że obrazy wstawione przez =IMAGE() wymagają w jego kopii jednego kliknięcia Zezwól na dostęp. download_url nadal zwraca plik XLSX. copy_counts podaje te same liczniki dla kopii; gdy pliku XLSX nie da się utworzyć, wynik zachowuje copy_url, nie ma download_url, a copy_notes podaje powód. download_notes wymienia wiersz po wierszu to, czego plik XLSX nie może zawierać z arkusza, na przykład wykresy lub drugi link w komórce.

Migawki i pliki wynikowe są przechowywane przez siedem dni po zakończeniu lub niepowodzeniu zadania. Po usunięciu tych plików zadanie nadal można odczytać wraz z jego statusem i licznikami, a pole job.result.download_url jest pomijane. Współdzielone migawki pozostają dostępne, dopóki inne zadanie ich potrzebuje. Porzucone surowe pliki są usuwane godzinę po wygaśnięciu rezerwacji przesyłania; zweryfikowany plik, dla którego nigdy nie uruchomiono zadania, traci migawkę siedem dni po wygaśnięciu rezerwacji. Usuwanie odbywa się co godzinę.

LicznikZnaczenie
links_foundWykryte wystąpienia linków, w tym powtórzone cele.
convertedWystąpienia zastąpione przypisanymi linkami.
left_by_hostLiczniki według hosta dla linków celowo pozostawionych bez zmian.
unresolvedWystąpienia, których nie udało się przekonwertować i które pozostają bez zmian.
unresolved_examplesPrzykładowe nierozwiązane adresy URL.
coverage_gapBrakujące odpowiedzi konwersji; zawsze 0 w wygenerowanym pliku.

Pokrycie spełnia równanie links_found = converted + sum(left_by_host) + unresolved. Linki społecznościowe, linki Google Sheets, nawigacja wewnątrz skoroszytu i istniejące linki NinjaBuy pozostają bez zmian. Każdy kandydat musi otrzymać odpowiedź przed zapisaniem wyniku; brakujące odpowiedzi powodują niepowodzenie zadania.

Zachowanie skoroszytu

Wynik zachowuje style, scalenia, rozmiary wierszy i kolumn oraz obrazy w zakresie odczytanej siatki. Fragmenty tekstu sformatowanego pozostają w komórkach bez hiperlinku komórki; komórki z linkiem używają jednej etykiety tekstowej i hiperlinku. Skoroszyt jest serializowany od nowa: wykresy, makra i inne funkcje poza siatką nie są zachowywane.

XLSX obsługuje jeden hiperlink na komórkę. Konwersja zastępuje linki w miejscu zamiast dodawać drugi link obok. Komórka z co najmniej dwoma różnymi celami linków niebędących obrazami zachowuje pierwszy jako hiperlink, a pozostałe wypisuje w notatce komórki, więc żaden cel nie ginie.

Limity

ZasóbMaksimum
Przesłany plik XLSX lub CSV20 MiB; musi odpowiadać zadeklarowanej liczbie bajtów
Rozpakowany XLSX lub łączny źródłowy HTML Google64 MiB
Komórki w całej konwersji500 000
Wykryte wystąpienia linków, w tym powtórzenia100 000
Każdy obraz10 MiB
Łącznie zachowane unikatowe obrazy32 MiB
Zserializowany plik XLSX64 MiB
Rezerwacja przesyłania / podpis pobieraniaPo 15 minut

Przekroczenie limitu odczytu lub zapisu powoduje jawny błąd. Zobacz Błędy: invalid-workbook, upload-expired i upload-too-large.