Importowanie elementów zbiorczo
Dostępne wyłącznie w wersjach API 2026-07 i nowszych
Za pomocą API platformy możesz importować duże ilości elementów na tablicę monday.com w asynchronicznym, trzyetapowym procesie:
- Rozpocznij zadanie importu (
ingest_itemslubbackfill_items) i odbierz wstępnie podpisane wartościupload_urlorazjob_id. - Prześlij plik CSV pod adres
upload_url. - Sprawdzaj status zadania za pomocą
fetch_job_status.
API udostępnia dwa sposoby rozpoczęcia importu. ingest_items to domyślna metoda w niemal każdym przypadku. backfill_items służy do jednorazowego, początkowego importu, który może uruchomić tylko administrator konta - na przykład do wypełnienia tablicy przed rozpoczęciem jej codziennego używania.
Wybór metody importu
ingest_items (zalecana) |
backfill_items |
|
|---|---|---|
| Zastosowanie | Integracje, cykliczne importy oraz tworzenie lub aktualizowanie elementów w ramach zwykłej pracy na tablicy | Jednorazowy, duży import początkowy przed rozpoczęciem pracy użytkowników lub automatyzacji na tablicy |
| Maksymalna liczba wierszy w zadaniu | 10,000 | 20,000 |
| Kto może wywołać tę metodę | Każdy użytkownik z uprawnieniami do edycji tablicy przez API (boards:write) |
Administrator konta oraz boards:write |
| Aktualizowanie istniejących elementów lub ich pomijanie | Zwykłe importy elementów: tak, za pomocą on_match. Importy klasycznych podelementów i hierarchii MLS: tylko tworzenie. |
Nieobsługiwane; zawsze tworzy nowe elementy |
| Godzinowy limit tworzenia i aktualizowania elementów | Wlicza się do limitu 19,000 elementów na konto na godzinę | Nie pomniejsza tego limitu |
| Wpływ na inne funkcje monday.com | Brak | Automatyzacje nie są uruchamiane. Utworzenie elementów nie jest zapisywane w dzienniku aktywności. |
Obsługiwane typy kolumn
Oba punkty końcowe obsługują następujące typy kolumn:
- Relacja z tablicą
- Pole wyboru
- Data
- Lista rozwijana
- Link
- Lokalizacja
- Długi tekst
- Liczba
- Osoby
- Telefon
- Status
- Tekst
- Oś czasu
Wiersze zawierające nieobsługiwane typy kolumn mogą nie przejść walidacji. Format CSV dla poszczególnych typów znajdziesz w sekcji Walidacja typów kolumn.
Ograniczenia
| Kategoria | backfill_items |
ingest_items |
|---|---|---|
| Maksymalna liczba wierszy w pliku | 20,000 | 10,000 |
| Maksymalny rozmiar pliku | 150 MB | 150 MB |
| Ważność adresu URL do przesyłania pliku | 10 minut | 10 minut |
| Ważność adresu URL raportu | 10 minut | 10 minut |
| Liczba zadań rozpoczynanych na konto na godzinę | 100 (wspólny limit z ingest_items) |
100 (wspólny limit z backfill_items) |
| Godzinowy limit tworzenia i aktualizowania elementów | Nie jest pomniejszany | 19,000 elementów na konto |
| Maksymalna liczba elementów w imporcie klasycznych podelementów | 20,000 (łącznie elementy nadrzędne i podelementy) | 10,000 (łącznie elementy nadrzędne i podelementy) |
| Maksymalna liczba elementów w imporcie hierarchii MLS | 5,000 | 5,000 |
| Maksymalna liczba podelementów na element nadrzędny | Limit podelementów na koncie | Limit podelementów na koncie |
Uwagi
- Rozmiar pliku jest sprawdzany przez usługę importu po przesłaniu pliku, a nie przez sam adres URL do przesyłania. Zbyt duże pliki są odrzucane z wartością
failure_reason: FILE_TOO_LARGE. - Nie można anulować trwającego zadania.
- Limity liczby elementów w imporcie hierarchii obowiązują niezależnie od maksymalnej liczby wierszy w pliku.
- Limit podelementów na element nadrzędny zależy od planu i jest taki sam jak limit obowiązujący w interfejsie. Element, którego liczba podelementów przekracza ten limit, zostaje odrzucony razem z wierszami jego podelementów.
Pierwsze kroki
Wymagania wstępne
- Token uwierzytelniający API
- Plik CSV z prawidłowymi nagłówkami i wartościami (zobacz Format CSV)
- Żądania muszą zawierać nagłówek
API-Version: 2026-07
Krok 1: Rozpocznij zadanie importu
- Pobierz wartości
board_idigroup_id, które wskazują, gdzie mają zostać dodane nowe elementy. W tym celu wykonaj zapytanieboardsigroups. - Wywołaj
ingest_items, chyba że potrzebujesz jednorazowego importu początkowego dostępnego tylko dla administratora - w takim przypadku użyjbackfill_items. - Zapisz zwrócone wartości
job_idiupload_url. Adresupload_urljest ważny tylko przez 10 minut.
Przykład użycia ingest (metoda domyślna)
mutation {
ingest_items(
board_id: "1234567890"
group_id: "topics"
on_match: { behaviour: UPSERT, match_column_id: "email" }
) {
job_id
upload_url
}
}
Jeśli podasz on_match, dopasowanie jest sprawdzane na całej tablicy. group_id określa tylko, gdzie zostaną dodane nowe wiersze. Nie ogranicza zakresu dopasowania ani nie przenosi dopasowanych elementów.
Przykład użycia backfill (tylko jednorazowy import początkowy)
mutation {
backfill_items(board_id: "1234567890", group_id: "topics") {
job_id
upload_url
}
}
Krok 2: Prześlij plik CSV
Prześlij plik CSV pod adres upload_url zwrócony w kroku 1.
PUT <upload_url>
Content-Type: text/csv
<CSV file content>
Pomyślne przesłanie pliku zwraca kod HTTP 200 i nagłówek ETag.
HTTP/1.1 200 OK
ETag: "abc123def456"
Podczas przesyłania pliku pod wstępnie podpisany adres URL nie dodawaj nagłówka żądania x-amz-checksum-crc32. Adres URL może zawierać parametry zapytania z sumą kontrolną, ale przekazanie sumy kontrolnej w niepodpisanym nagłówku żądania może spowodować odrzucenie przesyłania przez S3 z kodem HTTP 403.
Krok 3: Monitoruj status importu
Wysyłaj zapytanie fetch_job_status co około 10 sekund, aż zadanie osiągnie stan końcowy (COMPLETED, FAILED lub REJECTED).
query {
fetch_job_status(job_id: "7c9e6679-7425-40de-944b-e07fc1f90ae7") {
... on ItemsJobStatus {
status
counts {
submitted
invalid
skipped
created
updated
failed
}
progress_percentage
failure_reason
failure_message
fully_imported
report_created
report_url
}
}
}
Gdy report_created ma wartość true, jak najszybciej pobierz plik z adresu report_url. Adres raportu wygasa po 10 minutach.
Dokumentacja
Format CSV
- Wymagane jest kodowanie UTF-8.
- Jako separatora kolumn używaj przecinka (
,). - Wartości zawierające przecinki, cudzysłowy lub znaki nowej linii ujmuj w cudzysłowy. Cudzysłów występujący wewnątrz wartości zastąp dwoma cudzysłowami (
"").
Nagłówki
W przypadku zwykłych importów elementów:
- Pierwszą wartością nagłówka musi być
name. - Pozostałe wartości nagłówków muszą dokładnie odpowiadać wartościom
column_idna tablicy (z uwzględnieniem wielkości liter). - Aby pobrać prawidłowe identyfikatory kolumn na docelowej tablicy, wykonaj zapytanie
columns.
Nagłówki CSV muszą używać dokładnych identyfikatorów kolumn zwróconych przez zapytanie columns dla tablicy, a nie wyświetlanych nazw kolumn. Identyfikatory kolumn są przypisane do konkretnych tablic, więc nie ustalaj ich na podstawie typu ani nazwy kolumny.
Informacje o importach z podelementami znajdziesz w sekcji Tablice z klasycznymi podelementami. W nagłówkach podelementów użyj przyrostka .subitem.
Informacje o tablicach z wielopoziomowymi podelementami znajdziesz w sekcji Tablice z wielopoziomowymi podelementami. W importach hierarchii MLS użyj nagłówków name.l1, name.l2 i kolejnych poziomów aż do name.l5, aby określić hierarchię.
Wiersze
- W zwykłych importach elementów pierwsza wartość w każdym wierszu to nazwa elementu.
- Pozostałe wartości wiersza odpowiadają identyfikatorom kolumn z nagłówka.
- Puste wartości są dozwolone. Wartości składające się wyłącznie z białych znaków są traktowane jako puste.
- W trybie UPSERT (tylko
ingest_items) pusta komórka w dopasowanym wierszu jest ignorowana - istniejąca wartość kolumny pozostaje bez zmian. - W trybie UPSERT komórka zawierająca dokładnie tekst
<NULL>czyści wartość kolumny w dopasowanym elemencie.
Przykład
name,text,status,date,email,numeric,dropdown
Task 1,Description text,Working on it,2025-12-31,alice@monday.com,100,"Option A, Option B"
Task 2,Another task,Done,2026-01-15,bob@monday.com,200,Option C
Task 3,Third task,Stuck,2026-02-28,carol@monday.com,300,
Task 4,,,,,,
Tablice z klasycznymi podelementami
Import zbiorczy elementów pozwala tworzyć elementy razem z ich podelementami. Przyrostek .subitem wskazuje, które nagłówki i wiersze dotyczą podelementów. Informacje o tablicach z wielopoziomowymi podelementami znajdziesz w sekcji Tablice z wielopoziomowymi podelementami.
Użyj tych nagłówków:
name- nazwa elementu. Jest wymagana i może wystąpić tylko raz.<column_id>- kolumna elementu.name.subitem- nazwa podelementu. Dodaj ten nagłówek tylko wtedy, gdy plik zawiera wiersze podelementów.<column_id>.subitem- kolumna podelementu. Wymaga nagłówkaname.subitem.
name,status,name.subitem,text.subitem
Parent A,Done,,
,,Sub 1,First subitem of Parent A
,,Sub 2,Second subitem of Parent A
Parent B,Working on it,,
,,Sub 3,First subitem of Parent B
Zasady importowania klasycznych podelementów:
- Każdy wiersz reprezentuje jeden element. W wierszu elementu wypełnij
name, a kolumny podelementów pozostaw puste. W wierszu podelementu pozostawnamepuste i wypełnijname.subitem. Wiersz, w którym wypełniono oba pola, zostaje odrzucony, a wiersz, w którym nie wypełniono żadnego z nich, zostaje pominięty. - Powiązania między elementami nadrzędnymi i podelementami są ustalane na podstawie kolejności wierszy. Wiersz podelementu jest przypisywany do najbliższego wiersza elementu znajdującego się powyżej. Wiersz podelementu, który występuje przed jakimkolwiek wierszem elementu, zostaje odrzucony.
- Klasyczne podelementy obsługują dokładnie jeden poziom zagnieżdżenia. Nagłówki poziomów, takie jak
name.l1iname.l2, są niedozwolone. Jeśli występują w pliku, cały plik zostaje odrzucony. - Nagłówki
.subitemmuszą używać identyfikatorów kolumn podelementów. Aby je pobrać, wykonaj zapytaniecolumnsna tablicy podelementów. - Wartość umieszczona w wierszu niewłaściwego typu jest ignorowana. Wartość
.subitemw wierszu elementu ani wartość kolumny bez przyrostka w wierszu podelementu nie zostanie zapisana. group_idokreśla, gdzie zostaną dodane nowe elementy. Nie dotyczy podelementów.- Import klasycznych podelementów umożliwia tylko tworzenie. Nie używaj
on_match,UPSERTaniSKIPw pliku zawierającym nagłówki.subitem. - Jeśli wiersz elementu zostanie odrzucony lub jego przetwarzanie się nie powiedzie, jego podelementy nie zostaną utworzone. Raport wskaże wiersz elementu, który spowodował problem.
- Nagłówki są dopasowywane bez uwzględniania wielkości liter, w tym przyrostek
.subitem. - Plik bez nagłówka
name.subitemjest traktowany jak zwykły import elementów. - Tablica musi już mieć kolumnę podelementów.
- W raporcie zadania przyrostek
.subitempozostaje w nazwach kolumn podelementów.
Tablice z wielopoziomowymi podelementami
Import zbiorczy elementów pozwala tworzyć elementy na tablicach, które obsługują wielopoziomowe podelementy. Na takich tablicach hierarchię w pliku CSV określają kolumny poziomów, a nie jedna kolumna z nazwami elementów.
Użyj name.l1 dla elementów najwyższego poziomu, name.l2 dla ich elementów podrzędnych, name.l3 dla kolejnego poziomu i tak dalej - aż do name.l5. Tablice MLS obsługują obecnie maksymalnie 5 poziomów hierarchii. Nagłówek name jest również akceptowany jako kolumna elementów najwyższego poziomu, ale w plikach MLS zalecamy używanie name.l1, aby zapis był bardziej czytelny.
name.l1,name.l2,name.l3,status,text
Project A,,,,Top-level item
,Phase 1,,,Child item
,,Task 1,Stuck,Grandchild item
,,Task 2,Working on it,Another grandchild
,Phase 2,,Done,Another child
Project B,,,Working on it,Second top-level item
Zasady importowania hierarchii MLS:
- Każdy wiersz reprezentuje jeden element. Wpisz nazwę elementu w kolumnie odpowiadającej jego poziomowi hierarchii, a pozostałe kolumny poziomów pozostaw puste.
- Powiązania między elementami nadrzędnymi i podrzędnymi są ustalane na podstawie kolejności wierszy. Element nadrzędny wiersza to najnowszy wcześniejszy wiersz z poprzedniego poziomu.
- W tym samym wierszu możesz podać wartości zwykłych kolumn, używając identyfikatorów kolumn z tablicy.
- Import hierarchii MLS umożliwia tylko tworzenie. Nie używaj
on_match,UPSERTaniSKIPw importach hierarchii MLS. - W wierszach tworzących elementy nadrzędne nie podawaj wartości kolumn z włączonym podsumowaniem. Wartości elementów nadrzędnych są obliczane na podstawie elementów podrzędnych, a wiersze zawierające takie wartości mogą zostać odrzucone.
Walidacja typów kolumn
| Typ kolumny | Format wartości CSV | Zasady walidacji |
|---|---|---|
| Relacja z tablicą | Rozdzielone przecinkami odwołania do połączonych elementów. W kolumnach wskazujących jedną tablicę docelową można użyć identyfikatorów elementów lub ich dokładnych nazw. W kolumnach wskazujących wiele tablic docelowych wymagany jest format board_id:item_id lub board_id:item_name. Nazwy zawierające przecinki ujmij w cudzysłowy zgodnie z formatem CSV. |
Każdy wskazany element musi istnieć na skonfigurowanej tablicy docelowej. W jednym imporcie możesz użyć maksymalnie 5 kolumn typu Relacja z tablicą. W jednej komórce może znajdować się maksymalnie 50 połączonych elementów. Połączone elementy wliczają się też do limitów relacji między tablicami. |
| Pole wyboru | Wartość odpowiadająca typowi logicznemu. Wartości prawdziwe: true, yes, y, x, checked, 1, ✓, ✔. Wartości fałszywe: false, no, n, 0, unchecked. |
Wielkość liter nie ma znaczenia. Inne wartości nie przejdą walidacji. |
| Data | Prawidłowa data | Format ISO (YYYY-MM-DD). Inne formaty mogą zostać przekształcone do prawidłowego formatu. |
| Lista rozwijana | Etykiety rozdzielone przecinkami | Każda etykieta musi już istnieć w kolumnie i być aktywna. Wszystkie etykiety na rozdzielonej przecinkami liście muszą być prawidłowe. W przeciwnym razie wiersz się nie powiedzie. |
Prawidłowy adres e-mail lub Name <email> |
Wartość musi mieć prawidłowy format adresu e-mail. | |
| Link | Prawidłowy adres URL lub [Display Text](URL) |
Adres URL musi zaczynać się od http:// lub https://. |
| Lokalizacja | lat|lng|address, np. 37.7749|-122.4194|San Francisco, CA |
Szerokość i długość geograficzna muszą być prawidłowymi współrzędnymi, a pole adresu jest wymagane - wartość bez adresu nie przejdzie walidacji. Adres jest wyświetlany w komórce wraz z interaktywnym znacznikiem na mapie. Inne wartości nie przejdą walidacji. |
| Długi tekst | Tekst | Puste wartości są dozwolone. |
| Liczba | Wartość liczbowa zapisana jako tekst | Liczba całkowita lub dziesiętna. |
| Osoby | Identyfikatory rozdzielone przecinkami. Każdy identyfikator może mieć jedną z postaci: adres e-mail (alice@example.com), user:<id> lub user:<name>, team:<id> lub team:<name>, albo sama nazwa (Jeremy), która zostanie dopasowana do użytkownika lub zespołu. |
Każdy identyfikator musi wskazywać dokładnie jednego aktywnego użytkownika lub zespół na koncie. Brak dopasowania, wiele dopasowań lub błędy podczas dopasowania powodują niepowodzenie. Powtórzone identyfikatory są usuwane. Obowiązuje ustawienie max_people_allowed kolumny. |
| Telefon | Numer telefonu | Akceptowane są różne formaty; można opcjonalnie podać wskazówki dotyczące kraju. |
| Status | Tekst etykiety (dokładne dopasowanie) | Etykieta musi już istnieć w kolumnie i być aktywna. Wielkość liter ma znaczenie. |
| Tekst | Tekst | Puste wartości są dozwolone. |
| Oś czasu | YYYY-MM-DD/YYYY-MM-DD dla zakresu dat albo pojedyncza data w formacie YYYY-MM-DD (ustawia from = to = date) |
Obie daty muszą być prawidłowymi datami ISO. Inne separatory (myślnik ze spacjami, pionowa kreska, JSON) nie są akceptowane. |
Sprawdzone metody
- Preferuj
ingest_itemsw przypadku integracji i każdego importu, który ma przebiegać jak zwykła praca na tablicy. - Używaj
backfill_itemstylko przy zaplanowanym, jednorazowym imporcie początkowym. - Sprawdzaj status zadania mniej więcej co 10 sekund - nie częściej.
- Przed przesłaniem pliku sprawdź nagłówek CSV względem schematu tablicy.
- Obsługuj osobno błędy GraphQL zwrócone przez API i błędy HTTP występujące podczas przesyłania pliku.
- Pobierz raport od razu, gdy
report_createdma wartośćtrue. - W przypadku
RATE_LIMIT_EXCEEDEDzaczekaj przez czas wskazany wextensions.retryAfterMszamiast od razu ponawiać żądanie. - W przypadku
ingestrozłóż import dużej liczby elementów na całą godzinę, jeśli to możliwe, aby ograniczyć ryzyko odrzuceń z powoduACCOUNT_CAPACITY_EXCEEDED. - W importach hierarchii MLS ustaw wiersze od góry do dołu, tak aby każdy element podrzędny występował po elemencie nadrzędnym.
- W importach klasycznych podelementów ustaw wiersze tak, aby każdy podelement następował po elemencie, do którego należy.
Rozwiązywanie problemów
| Problem | Objawy | Rozwiązanie |
|---|---|---|
| Wygasł adres URL do przesyłania pliku | Kod HTTP 403 podczas przesyłania pliku metodą PUT (S3 zwraca komunikat "Request has expired") |
Rozpocznij nowe zadanie i prześlij plik w ciągu 10 minut. |
| Przesyłanie odrzucone z powodu niepodpisanego nagłówka sumy kontrolnej | Kod HTTP 403 z S3 i komunikat HeadersNotSigned dotyczący x-amz-checksum-crc32 |
Usuń nagłówek żądania x-amz-checksum-crc32 i prześlij plik, używając tylko wymaganych nagłówków, takich jak Content-Type: text/csv. |
| Nieprawidłowy format CSV | Status REJECTED, failure_reason: INVALID_UPLOAD |
Sprawdź, czy wymagane nagłówki nazw lub poziomów są obecne, wszystkie identyfikatory kolumn istnieją na tablicy, plik jest zakodowany w UTF-8, separatorem jest przecinek, a cudzysłowy wewnątrz wartości są odpowiednio zamienione na podwójne (""). |
| Nie utworzono elementów | Status COMPLETED z wysoką wartością counts.invalid lub counts.failed i niską wartością counts.created |
Pobierz raport z adresu report_url i sprawdź błędy poszczególnych wierszy. Sprawdź literówki w identyfikatorach kolumn, pisownię i wielkość liter w etykietach statusu lub listy rozwijanej, format dat oraz to, czy wskazani użytkownicy lub zespoły istnieją. |
Status zatrzymał się na UPLOAD_PENDING |
Brak postępu po przesłaniu pliku CSV | Sprawdź, czy przesyłanie zakończyło się kodem HTTP 200 i zwróciło nagłówek ETag. Jeśli nie, rozpocznij nowe zadanie i prześlij plik ponownie. |
| Brak uprawnień do backfill | Status REJECTED, failure_reason: PERMISSION_DENIED albo błąd GraphQL "Only admin users can perform this operation." |
Metoda backfill_items wymaga uprawnień administratora konta. Zamiast niej użyj ingest_items. |
| Plik jest za duży | Status REJECTED, failure_reason: FILE_TOO_LARGE |
Podziel plik na części o rozmiarze nieprzekraczającym 150 MB. |
| Przekroczono godzinowy limit (ingest) | Status REJECTED, failure_reason: ACCOUNT_CAPACITY_EXCEEDED |
Liczba prawidłowych wierszy w zadaniu przekroczyłaby pozostały limit 19,000 elementów na godzinę. Rozłóż import na całą godzinę albo poczekaj na odnowienie limitu. |
| Limit liczby rozpoczętych zadań | Błąd GraphQL RATE_LIMIT_EXCEEDED (HTTP 429) podczas wywoływania ingest_items lub backfill_items |
Przed ponowieniem żądania zaczekaj przez czas wskazany w extensions.retryAfterMs. Limit 100 wywołań na godzinę jest wspólny dla ingest_items i backfill_items. |
| Nie znaleziono elementu relacji z tablicą albo użycie go jest niedozwolone | Wiersz z wartością w kolumnie typu Relacja z tablicą jest nieprawidłowy lub jego przetwarzanie się nie powiodło | Sprawdź, czy każdy wskazany element istnieje na skonfigurowanej tablicy docelowej. W kolumnach wskazujących wiele tablic docelowych użyj prefiksu board_id: i nie przekraczaj limitu połączonych elementów w komórce. |
| Odrzucono wiersz klasycznego podelementu | Wiersz podelementu w imporcie klasycznych podelementów jest nieprawidłowy | Sprawdź, czy wiersz wypełnia pole name albo name.subitem, ale nie oba naraz, oraz czy wcześniejszy wiersz w pliku zawiera element. |
| Zgłoszono, że nie znaleziono kolumn podelementów | Wiersze są nieprawidłowe; błąd informuje, że nie znaleziono kolumn .subitem |
Wykonaj zapytanie columns na tablicy podelementów i użyj zwróconych identyfikatorów kolumn z dodanym przyrostkiem .subitem. |
| Odrzucono wiersz hierarchii MLS | Wiersz w imporcie MLS jest nieprawidłowy | Sprawdź, czy nazwa elementu znajduje się tylko w jednej kolumnie poziomu (name.l1–name.l5) oraz czy wiersz elementu nadrzędnego występuje wcześniej w pliku. |
Powiązane strony dokumentacji
- Dokumentacja API Ingest items (metoda domyślna)
- Dokumentacja API Backfill items
- Import zbiorczy innych typów