API REST

Fogli di calcolo

Converti Google Sheets, XLSX o CSV in una cartella XLSX con attribuzione.

Converti i link in un intero foglio Google o in una cartella caricata usando il token bearer del tuo account. Il risultato è sempre .xlsx, anche con un input CSV. I link vengono sostituiti sul posto, con l'attribuzione al tuo account e i valori facoltativi campaign e label descritti in Link.

Input Google Sheets

Invia un URL di Google Sheets che NinjaBuy possa leggere. La conversione legge tutte le schede, non solo l'anteprima visualizzata, e fissa un'istantanea per questo lavoro.

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

Input XLSX o CSV

Per prima cosa prenota un caricamento. filename deve terminare con .xlsx o .csv e contenere da 1 a 255 caratteri dopo la rimozione degli spazi alle estremità. bytes è la dimensione esatta del file in byte, da 1 a 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}'

La risposta 201 contiene upload_id, un'url firmata per PUT, expires_at (millisecondi dall'inizio dell'epoca Unix), max_bytes e request_id. La prenotazione scade dopo 15 minuti. Invia il file grezzo con PUT all'URL ricevuto, poi invia il suo identificativo di caricamento:

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

Il PUT diretto usa il contratto di risposta del servizio di archiviazione. NinjaBuy convalida i byte caricati quando invii la conversione. Gli identificativi di caricamento sconosciuti o di altri account restituiscono 404. L'oggetto archiviato deve corrispondere al numero di byte dichiarato; un oggetto più grande della dimensione dichiarata o del massimo restituisce 413 upload-too-large, mentre un oggetto più piccolo (troncato) restituisce 422 invalid-workbook con la spiegazione della mancata corrispondenza del numero di byte. Questi controlli avvengono prima del download e si applicano anche se i byte cambiano dopo il controllo dei metadati. I file grezzi dei caricamenti rifiutati vengono eliminati, mentre quelli dei caricamenti accettati vengono eliminati una volta registrata la relativa istantanea convalidata.

Invia esattamente una sorgente: url o upload_id. Entrambe accettano campaign e label facoltativi; non serve un campo async. Entrambe le route POST accettano Idempotency-Key e ognuna consuma uno spazio della finestra di creazione condivisa di 30 chiamate al minuto. Le conversioni dei link derivate non consumano spazi aggiuntivi.

Lavoro e download

L'invio di un foglio restituisce 202 con Location: /api/v1/jobs/JOB_ID, Retry-After: 5 e questo corpo:

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

Interroga Operazioni con il token dello stesso account fino a done o failed, rispettando poll_after_seconds. Un job.result completato contiene kind: "sheet_conversion", counts e un download_url firmato valido per 15 minuti. Interroga di nuovo per ottenere una nuova firma di download. Un lavoro fallito contiene error e non offre download parziali.

Per un Google Sheet, job.result può contenere anche copy_url, un link di sola visualizzazione a una copia esatta in Google Sheets con i tuoi link al loro posto; chiunque abbia il link può tenerne una propria copia con File → Crea una copia. copy_notes elenca ciò che chi legge quella copia deve sapere, ad esempio che le immagini create con =IMAGE() richiedono un clic su Consenti accesso nella propria copia. download_url restituisce ancora il file XLSX. copy_counts riporta gli stessi conteggi per la copia; se il file XLSX non si può creare, il risultato mantiene copy_url, non ha download_url e copy_notes ne spiega il motivo. download_notes elenca, riga per riga, ciò che il file XLSX non può contenere del foglio, come grafici o un secondo link in una cella.

Le istantanee e i file dei risultati vengono conservati per sette giorni dopo il completamento o il fallimento del lavoro. Dopo la pulizia, il lavoro resta consultabile con il suo stato e i conteggi, e job.result.download_url viene omesso. Le istantanee condivise vengono conservate finché un altro lavoro ne ha ancora bisogno. I file grezzi dei caricamenti abbandonati vengono eliminati un'ora dopo la scadenza della prenotazione di caricamento; un caricamento convalidato che non avvia mai un lavoro perde la propria istantanea sette giorni dopo la scadenza della prenotazione. La pulizia viene eseguita ogni ora.

ConteggioSignificato
links_foundOccorrenze di link trovate, incluse le destinazioni ripetute.
convertedOccorrenze sostituite con link con attribuzione.
left_by_hostConteggi raggruppati per host dei link lasciati intenzionalmente invariati.
unresolvedOccorrenze che non è stato possibile convertire e che restano invariate.
unresolved_examplesEsempi di URL non risolti.
coverage_gapRisposte di conversione mancanti; sempre 0 in un file prodotto.

La copertura soddisfa links_found = converted + sum(left_by_host) + unresolved. I link social, quelli di Google Sheets, la navigazione nella stessa cartella e i link NinjaBuy esistenti restano invariati. Ogni candidato alla conversione deve ricevere una risposta prima della scrittura del risultato; le risposte mancanti fanno fallire il lavoro.

Conservazione della cartella

Il risultato conserva stili, celle unite, dimensioni di righe e colonne e immagini come rappresentati dalla griglia analizzata. I segmenti di testo formattato si conservano nelle celle senza un collegamento ipertestuale di cella; le celle con link usano un’unica etichetta di testo e un collegamento ipertestuale. La cartella viene serializzata nuovamente: grafici, macro e altre funzionalità esterne alla griglia non vengono conservati.

XLSX supporta un collegamento ipertestuale per cella. La conversione sostituisce i link sul posto invece di aggiungerne un secondo accanto. Una cella con due o più destinazioni di link diverse che non siano immagini mantiene la prima come collegamento ipertestuale ed elenca le altre nella nota della cella, così nessuna destinazione va persa.

Limiti

RisorsaMassimo
File XLSX o CSV caricato20 MiB; deve corrispondere al conteggio di byte dichiarato
XLSX espanso o HTML combinato della sorgente Google64 MiB
Celle nell'intera conversione500.000
Occorrenze di link trovate, incluse le ripetizioni100.000
Ogni immagine10 MiB
Totale delle immagini uniche conservate32 MiB
Risultato XLSX serializzato64 MiB
Prenotazione di caricamento / firma di download15 minuti ciascuna

Il superamento di un limite di analisi o scrittura causa un errore esplicito. Consulta Errori per invalid-workbook, upload-expired e upload-too-large.