REST API

Υπολογιστικά φύλλα

Μετατρέψτε Google Sheets, XLSX ή CSV σε βιβλίο XLSX με απόδοση παραπομπών.

Μετατρέψτε συνδέσμους σε ολόκληρο Google Sheet ή μεταφορτωμένο βιβλίο χρησιμοποιώντας το διακριτικό bearer του λογαριασμού σας. Το αποτέλεσμα είναι πάντα .xlsx, ακόμη και για είσοδο CSV. Οι σύνδεσμοι αντικαθίστανται στην ίδια θέση, με απόδοση στον λογαριασμό σας και προαιρετικά campaign και label, όπως περιγράφεται στους Συνδέσμους.

Είσοδος Google Sheet

Υποβάλετε ένα URL Google Sheets που μπορεί να διαβάσει το NinjaBuy. Η μετατροπή διαβάζει κάθε καρτέλα, όχι μόνο την προεπισκόπηση, και αποθηκεύει ένα σταθερό στιγμιότυπο για αυτή την εργασία.

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 ή CSV

Πρώτα δεσμεύστε μια μεταφόρτωση. Το filename πρέπει να τελειώνει σε .xlsx ή .csv και να περιέχει 1 έως 255 χαρακτήρες μετά την αφαίρεση εξωτερικών κενών. Το bytes είναι το ακριβές μέγεθος αρχείου σε byte, από 1 έως 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}'

Η απόκριση 201 περιέχει upload_id, υπογεγραμμένο url για PUT, expires_at (χιλιοστά του δευτερολέπτου από την εποχή Unix), max_bytes και request_id. Η δέσμευση λήγει μετά από 15 λεπτά. Στείλτε το ακατέργαστο αρχείο με PUT στο URL που επιστράφηκε και μετά υποβάλετε το αναγνωριστικό μεταφόρτωσης:

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

Το άμεσο PUT χρησιμοποιεί τη σύμβαση αποκρίσεων της υπηρεσίας αποθήκευσης. Το NinjaBuy επικυρώνει τα μεταφορτωμένα byte όταν υποβάλετε τη μετατροπή. Άγνωστα αναγνωριστικά μεταφόρτωσης ή αναγνωριστικά άλλων λογαριασμών επιστρέφουν 404. Το αποθηκευμένο αντικείμενο πρέπει να αντιστοιχεί στο δηλωμένο πλήθος byte· ένα αντικείμενο μεγαλύτερο από το δηλωμένο μέγεθος ή το ανώτατο όριο επιστρέφει 413 upload-too-large, ενώ ένα μικρότερο (περικομμένο) αντικείμενο επιστρέφει 422 invalid-workbook με εξήγηση της ασυμφωνίας στο πλήθος byte. Αυτοί οι έλεγχοι γίνονται πριν από τη λήψη και ισχύουν επίσης αν τα byte αλλάξουν μετά τον έλεγχο των μεταδεδομένων. Οι απορριφθείσες μεταφορτώσεις πρωτογενών αρχείων διαγράφονται, ενώ οι αποδεκτές διαγράφονται μόλις καταγραφεί το επικυρωμένο στιγμιότυπό τους.

Στείλτε ακριβώς μία πηγή: url ή upload_id. Και οι δύο δέχονται προαιρετικά campaign και label· δεν χρειάζεται πεδίο async. Και οι δύο διαδρομές POST δέχονται Idempotency-Key και καθεμία καταναλώνει μία θέση στο κοινό παράθυρο 30 δημιουργιών ανά λεπτό. Οι επιμέρους μετατροπές συνδέσμων δεν καταναλώνουν επιπλέον θέσεις.

Εργασία και λήψη

Η υποβολή φύλλου επιστρέφει 202 με Location: /api/v1/jobs/JOB_ID, Retry-After: 5 και αυτό το σώμα:

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

Ελέγχετε τις Εργασίες με το διακριτικό του ίδιου λογαριασμού μέχρι done ή failed, τηρώντας το poll_after_seconds. Ένα ολοκληρωμένο job.result περιέχει kind: "sheet_conversion", counts και υπογεγραμμένο download_url με ισχύ 15 λεπτών. Ελέγξτε ξανά για νέα υπογραφή λήψης. Μια αποτυχημένη εργασία έχει error και δεν παρέχει μερική λήψη.

Για ένα Google Sheet, το job.result μπορεί επίσης να περιέχει copy_url, έναν σύνδεσμο μόνο για προβολή σε ένα ακριβές αντίγραφο Google Sheets με τους συνδέσμους σας στη θέση τους· όποιος έχει τον σύνδεσμο μπορεί να κρατήσει δικό του αντίγραφο με Αρχείο → Δημιουργία αντιγράφου. Το copy_notes αναφέρει ό,τι πρέπει να γνωρίζει ο αναγνώστης αυτού του αντιγράφου, για παράδειγμα ότι οι εικόνες που δημιουργήθηκαν με =IMAGE() χρειάζονται ένα κλικ στο Να επιτρέπεται η πρόσβαση στο αντίγραφό του. Το download_url εξακολουθεί να επιστρέφει το XLSX. Το copy_counts δίνει τις ίδιες μετρήσεις για το αντίγραφο· όταν το XLSX δεν μπορεί να δημιουργηθεί, το αποτέλεσμα κρατά το copy_url, δεν έχει download_url και το copy_notes εξηγεί τον λόγο. Το download_notes αναφέρει γραμμή προς γραμμή ό,τι δεν μπορεί να περιέχει το XLSX από το φύλλο, όπως γραφήματα ή δεύτερο σύνδεσμο σε ένα κελί.

Τα στιγμιότυπα και τα αρχεία αποτελεσμάτων διατηρούνται για επτά ημέρες μετά την ολοκλήρωση ή την αποτυχία της εργασίας. Μετά την εκκαθάριση, η εργασία παραμένει αναγνώσιμη με την κατάστασή της και τις μετρήσεις της, ενώ το job.result.download_url παραλείπεται. Τα κοινόχρηστα στιγμιότυπα παραμένουν όσο τα χρειάζεται κάποια άλλη εργασία. Οι εγκαταλελειμμένες μεταφορτώσεις πρωτογενών αρχείων διαγράφονται μία ώρα μετά τη λήξη της δέσμευσης μεταφόρτωσης· μια επικυρωμένη μεταφόρτωση που δεν ξεκινά ποτέ εργασία χάνει το στιγμιότυπό της επτά ημέρες μετά τη λήξη της δέσμευσης. Η εκκαθάριση εκτελείται κάθε ώρα.

ΜέτρησηΣημασία
links_foundΕμφανίσεις συνδέσμων που εντοπίστηκαν, συμπεριλαμβανομένων επαναλαμβανόμενων προορισμών.
convertedΕμφανίσεις που αντικαταστάθηκαν με συνδέσμους με απόδοση παραπομπών.
left_by_hostΠλήθη ανά κεντρικό υπολογιστή για συνδέσμους που σκόπιμα παραμένουν αμετάβλητοι.
unresolvedΕμφανίσεις που δεν μετατράπηκαν και παραμένουν αμετάβλητες.
unresolved_examplesΠαραδείγματα URL που δεν επιλύθηκαν.
coverage_gapΑπαντήσεις μετατροπής που λείπουν· πάντα 0 σε παραγόμενο αρχείο.

Η κάλυψη ικανοποιεί links_found = converted + sum(left_by_host) + unresolved. Σύνδεσμοι κοινωνικών δικτύων, Google Sheets, πλοήγηση στο ίδιο βιβλίο και υπάρχοντες σύνδεσμοι NinjaBuy παραμένουν αμετάβλητοι. Κάθε υποψήφιος σύνδεσμος μετατροπής πρέπει να λάβει απάντηση πριν γραφτεί το αποτέλεσμα· η έλλειψη απαντήσεων προκαλεί αποτυχία της εργασίας.

Διατήρηση του βιβλίου

Το αποτέλεσμα διατηρεί στυλ, συγχωνεύσεις, μεγέθη γραμμών και στηλών και εικόνες όπως αναπαρίστανται στο αναλυμένο πλέγμα. Τα τμήματα εμπλουτισμένου κειμένου διατηρούνται σε κελιά χωρίς υπερσύνδεσμο κελιού· τα συνδεδεμένα κελιά χρησιμοποιούν μία ετικέτα κειμένου και έναν υπερσύνδεσμο. Είναι βιβλίο που σειριοποιείται εκ νέου: γραφήματα, μακροεντολές και άλλες δυνατότητες εκτός αυτού του πλέγματος δεν διατηρούνται.

Το XLSX υποστηρίζει έναν υπερσύνδεσμο ανά κελί. Η μετατροπή αντικαθιστά τους συνδέσμους στην ίδια θέση αντί να προσθέτει δεύτερο σύνδεσμο δίπλα τους. Κελί με δύο ή περισσότερους διαφορετικούς προορισμούς συνδέσμων που δεν είναι εικόνες κρατά τον πρώτο ως υπερσύνδεσμο και παραθέτει τους υπόλοιπους στη σημείωση του κελιού, ώστε να μη χαθεί κανένας προορισμός.

Όρια

ΠόροςΜέγιστο
Μεταφορτωμένο αρχείο XLSX ή CSV20 MiB· πρέπει να αντιστοιχεί στο δηλωμένο πλήθος byte
Αποσυμπιεσμένο XLSX ή συνδυασμένο HTML πηγών Google64 MiB
Κελιά σε ολόκληρη τη μετατροπή500.000
Εμφανίσεις συνδέσμων που εντοπίστηκαν, μαζί με επαναλήψεις100.000
Κάθε εικόνα10 MiB
Σύνολο μοναδικών εικόνων που διατηρούνται32 MiB
Σειριοποιημένο αποτέλεσμα XLSX64 MiB
Δέσμευση μεταφόρτωσης / υπογραφή λήψης15 λεπτά η καθεμία

Η υπέρβαση ορίου ανάλυσης ή εγγραφής προκαλεί ρητή αποτυχία. Δείτε τα Σφάλματα για invalid-workbook, upload-expired και upload-too-large.