Zaktualizuj wartości pól niestandardowych w rekordach, używając specyficznych dla typu parametrów dla każdego typu pola


Ustaw wartości pól niestandardowych

Pola niestandardowe rozszerzają standardową strukturę rekordu Blue o dane specyficzne dla biznesu. Ten punkt końcowy umożliwia ustawienie lub aktualizację wartości dla dowolnego pola niestandardowego w rekordzie. Każdy typ pola wymaga specyficznych parametrów, aby zapewnić integralność danych i prawidłową walidację.

Podstawowy przykład

mutation SetTextFieldValue {
  setTodoCustomField(input: {
    todoId: "todo_abc123"
    customFieldId: "field_xyz789"
    text: "Project specification document"
  })
}

Zaawansowany przykład

mutation SetMultipleFieldTypes {
  # Set a date range field
  dateField: setTodoCustomField(input: {
    todoId: "todo_abc123"
    customFieldId: "field_date_001"
    startDate: "2024-01-15T09:00:00Z"
    endDate: "2024-01-31T17:00:00Z"
    timezone: "America/New_York"
  })
  
  # Set a multi-select field
  selectField: setTodoCustomField(input: {
    todoId: "todo_abc123"
    customFieldId: "field_select_002"
    customFieldOptionIds: ["option_high", "option_urgent", "option_client"]
  })
  
  # Set a location field
  locationField: setTodoCustomField(input: {
    todoId: "todo_abc123"
    customFieldId: "field_location_003"
    latitude: 40.7128
    longitude: -74.0060
  })
}

Parametry wejściowe

SetTodoCustomFieldInput

Parametr Typ Wymagane Opis
todoId String! ✅ Tak ID rekordu do zaktualizowania
customFieldId String! ✅ Tak ID pola niestandardowego
text String Nie Dla TEXT_SINGLE, TEXT_MULTI, PHONE, EMAIL, URL
number Float Nie Dla NUMBER, PERCENT, RATING
currency String Nie Kod waluty dla typu CURRENCY (np. "USD")
checked Boolean Nie Dla pól CHECKBOX
startDate DateTime Nie Data początkowa dla pól DATE
endDate DateTime Nie Data końcowa dla pól zakresu DATE
timezone String Nie Strefa czasowa dla pól DATE (np. "America/New_York")
latitude Float Nie Szerokość geograficzna dla pól LOCATION
longitude Float Nie Długość geograficzna dla pól LOCATION
regionCode String Nie Kod regionu dla pól PHONE
countryCodes [String!] Nie Kody krajów ISO dla pól COUNTRY
customFieldOptionId String Nie ID opcji dla pól SELECT_SINGLE
customFieldOptionIds [String!] Nie ID opcji dla pól SELECT_MULTI
customFieldReferenceTodoIds [String!] Nie ID rekordów dla pól REFERENCE

Przykłady typów pól

Pola tekstowe

mutation {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_description"
    text: "Detailed project requirements and specifications"
  })
}

Pola liczbowe

mutation {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_budget"
    number: 15000.50
  })
}

Pola wyboru

# Single Select
mutation {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_priority"
    customFieldOptionId: "option_high"
  })
}

# Multi Select
mutation {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_tags"
    customFieldOptionIds: ["option_frontend", "option_urgent", "option_v2"]
  })
}

Pola daty

# Single Date
mutation {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_deadline"
    startDate: "2024-12-31T23:59:59Z"
  })
}

# Date Range
mutation {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_project_timeline"
    startDate: "2024-01-01T00:00:00Z"
    endDate: "2024-03-31T23:59:59Z"
    timezone: "UTC"
  })
}

Pola lokalizacji

mutation {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_office_location"
    latitude: 37.7749
    longitude: -122.4194
  })
}

Pola walutowe

mutation {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_invoice_amount"
    number: 5000
    currency: "USD"
  })
}

Pola plików

Pola plików używają oddzielnych mutacji:

# Add a file
mutation {
  createTodoCustomFieldFile(input: {
    todoId: "todo_123"
    customFieldId: "field_attachments"
    fileUid: "file_upload_789"
  })
}

# Remove a file
mutation {
  deleteTodoCustomFieldFile(input: {
    todoId: "todo_123"
    customFieldId: "field_attachments"
    fileUid: "file_upload_789"
  })
}

Ustawianie wartości podczas tworzenia rekordu

Możesz ustawić wartości pól niestandardowych podczas tworzenia nowego rekordu:

mutation {
  createTodo(input: {
    todoListId: "list_project_123"
    title: "New Feature Development"
    customFields: [
      {
        customFieldId: "field_priority"
        value: "high"
      },
      {
        customFieldId: "field_estimate"
        value: "8"
      }
    ]
  }) {
    id
    customFields {
      customField {
        name
      }
      value
    }
  }
}

Pola odpowiedzi

Mutacja zwraca wartość logiczną wskazującą na sukces:

Pole Typ Opis
setTodoCustomField Boolean! Prawda, jeśli operacja się powiodła

Wymagane uprawnienia

Użytkownicy muszą mieć uprawnienia do edytowania zarówno rekordu, jak i konkretnego pola niestandardowego:

Rola Może ustawić wartości pól
OWNER ✅ Tak
ADMIN ✅ Tak
MEMBER ✅ Tak (chyba że ograniczone przez rolę niestandardową)
CLIENT ✅ Tak (chyba że ograniczone przez rolę niestandardową)

Dla użytkowników z niestandardowymi rolami projektowymi system wykonuje dwustopniową kontrolę:

  1. Najpierw weryfikuje, czy użytkownik ma dostęp na poziomie projektu
  2. Następnie sprawdza, czy konkretne pole jest oznaczone jako editable w ich konfiguracji roli niestandardowej

Oznacza to, że użytkownik może mieć ogólny dostęp do projektu, ale nadal być ograniczony w edytowaniu niektórych pól w zależności od swojej roli niestandardowej.

Odpowiedzi błędów

Pole niestandardowe nie znalezione

{
  "errors": [{
    "message": "Custom field was not found.",
    "extensions": {
      "code": "CUSTOM_FIELD_NOT_FOUND"
    }
  }]
}

Nieautoryzowany dostęp

{
  "errors": [{
    "message": "You are not authorized.",
    "extensions": {
      "code": "FORBIDDEN"
    }
  }]
}

Nieprawidłowa wartość pola

{
  "errors": [{
    "message": "Invalid value for field type NUMBER",
    "extensions": {
      "code": "VALIDATION_ERROR"
    }
  }]
}

Ważne uwagi

  • Zachowanie upsert: Mutacja tworzy nową wartość pola, jeśli żadna nie istnieje, lub aktualizuje istniejącą wartość
  • Bezpieczeństwo typów: Podawaj tylko parametry, które odpowiadają typowi pola (np. nie wysyłaj text dla pola NUMBER)
  • Efekty uboczne: Ustawienie wartości wyzwala:
    • Przeliczenia pól formuły
    • Zasady automatyzacji
    • Powiadomienia webhook
    • Wpisy w dzienniku aktywności
    • Aktualizacje wykresów
  • Zachowania specjalne:
    • Pola CURRENCY automatycznie obsługują obliczenia konwersji
    • Pola REFERENCE aktualizują relacje dwukierunkowe
    • Pola FORMULA są tylko do odczytu i nie mogą być ustawiane bezpośrednio (są obliczane automatycznie)
    • Pola LOOKUP są tylko do odczytu i nie mogą być ustawiane bezpośrednio (pobierają dane z rekordów referencyjnych)
    • Pola BUTTON wyzwalają zdarzenia automatyzacji, gdy są "klikane"
  • Walidacja: API weryfikuje, że:
    • Rekord istnieje w projekcie
    • Pole niestandardowe istnieje w tym samym projekcie
    • Użytkownik ma uprawnienia do edycji
    • Wartość odpowiada wymaganiom typu pola

Odniesienie formatu wartości

Typ pola Parametr Format Przykład
TEXT_SINGLE text String "Project Alpha"
TEXT_MULTI text String with newlines "Line 1\nLine 2"
NUMBER number Float 42.5
CURRENCY number + currency Float + ISO code 1000.00 + "USD"
PERCENT number Float (0-100) 75
RATING number Float (within min/max) 4.5
CHECKBOX checked Boolean true
DATE startDate ISO 8601 DateTime "2024-01-15T00:00:00Z"
DATE (range) startDate + endDate ISO 8601 DateTimes See example above
SELECT_SINGLE customFieldOptionId Option ID "option_123"
SELECT_MULTI customFieldOptionIds Array of Option IDs ["opt_1", "opt_2"]
PHONE text String "+1-555-123-4567"
EMAIL text String "user@example.com"
URL text String "https://example.com"
LOCATION latitude + longitude Floats 40.7128, -74.0060
COUNTRY countryCodes ISO 3166 codes ["US", "CA"]
REFERENCE customFieldReferenceTodoIds Array of record IDs ["todo_1", "todo_2"]
FORMULA N/A Read-only - calculated automatically N/A
LOOKUP N/A Read-only - pulls from references N/A

Powiązane punkty końcowe

Asystent AI

Odpowiedzi są generowane przy użyciu sztucznej inteligencji i mogą zawierać błędy.

Jak mogę Ci pomóc?

Zapytaj mnie o cokolwiek dotyczącego Blue lub tej dokumentacji.

Wciśnij Enter, aby wysłać • Shift+Enter, aby dodać nową linię • ⌘I, aby otworzyć