Cards v2

Karta

Karty obsługują zdefiniowany układ, interaktywne elementy interfejsu, takie jak przyciski, oraz rich media, np. obrazy. Korzystaj z kart, aby przedstawiać szczegółowe informacje, zbierać informacje od użytkowników i zachęcać ich do dalszego działania.

W Google Chat karty pojawiają się w kilku miejscach:

  • Samodzielne wiadomości.
  • Obok SMS-a, tuż pod SMS-em.
  • Jako okno.

Ten przykładowy kod JSON tworzy „wizytówkę”, która obejmuje:

  • Nagłówek z nazwą kontaktu, tytułem stanowiska i zdjęciem awatara.
  • Sekcja zawierająca informacje kontaktowe, w tym sformatowany tekst.
  • Przyciski, które użytkownicy mogą kliknąć, aby udostępnić kontakt, albo wyświetlić więcej lub mniej informacji.

Przykładowa karta kontaktowa

{
  "cardsV2": [
    {
      "cardId": "unique-card-id",
      "card": {
        "header": {
          "title": "Sasha",
          "subtitle": "Software Engineer",
          "imageUrl":
          "https://developers.google.com/chat/images/quickstart-app-avatar.png",
          "imageType": "CIRCLE",
          "imageAltText": "Avatar for Sasha",
        },
        "sections": [
          {
            "header": "Contact Info",
            "collapsible": true,
            "uncollapsibleWidgetsCount": 1,
            "widgets": [
              {
                "decoratedText": {
                  "startIcon": {
                    "knownIcon": "EMAIL",
                  },
                  "text": "sasha@example.com",
                }
              },
              {
                "decoratedText": {
                  "startIcon": {
                    "knownIcon": "PERSON",
                  },
                  "text": "<font color=\"#80e27e\">Online</font>",
                },
              },
              {
                "decoratedText": {
                  "startIcon": {
                    "knownIcon": "PHONE",
                  },
                  "text": "+1 (555) 555-1234",
                }
              },
              {
                "buttonList": {
                  "buttons": [
                    {
                      "text": "Share",
                      "onClick": {
                        "openLink": {
                          "url": "https://example.com/share",
                        }
                      }
                    },
                    {
                      "text": "Edit",
                      "onClick": {
                        "action": {
                          "function": "goToView",
                          "parameters": [
                            {
                              "key": "viewType",
                              "value": "EDIT",
                            }
                          ],
                        }
                      }
                    },
                  ],
                }
              },
            ],
          },
        ],
      },
    }
  ],
}
Zapis JSON
{
  "header": {
    object (CardHeader)
  },
  "sections": [
    {
      object (Section)
    }
  ],
  "cardActions": [
    {
      object (CardAction)
    }
  ],
  "name": string,
  "fixedFooter": {
    object (CardFixedFooter)
  },
  "displayStyle": enum (DisplayStyle),
  "peekCardHeader": {
    object (CardHeader)
  }
}
Pola
header

object (CardHeader)

Nagłówek karty. Nagłówek zwykle zawiera obraz na początku i tytuł. Nagłówki zawsze wyświetlają się u góry karty.

sections[]

object (Section)

Zawiera kolekcję widżetów. Każda sekcja ma własny, opcjonalny nagłówek. Sekcje są wizualnie rozdzielone przecinkami.

cardActions[]

object (CardAction)

Działania na karcie. Czynności są dodawane do menu paska narzędzi karty.

Karty aplikacji Google Chat nie mają paska narzędzi, dlatego cardActions[] nie jest obsługiwany w aplikacjach Google Chat.

Na przykład poniższy kod JSON tworzy menu działania karty z opcjami Settings i Send Feedback:

"cardActions": [
  {
    "actionLabel": "Settings",
    "onClick": {
      "action": {
        "functionName": "goToView",
        "parameters": [
          {
            "key": "viewType",
            "value": "SETTING"
         }
        ],
        "loadIndicator": "LoadIndicator.SPINNER"
      }
    }
  },
  {
    "actionLabel": "Send Feedback",
    "onClick": {
      "openLink": {
        "url": "https://example.com/feedback"
      }
    }
  }
]
name

string

Nazwa karty. Używane jako identyfikator karty w Nawigacji po karcie.

Aplikacje do obsługi czatu nie obsługują nawigacji na kartach, dlatego to pole jest ignorowane.

displayStyle

enum (DisplayStyle)

W dodatkach do Google Workspace ustawia właściwości wyświetlania elementu peekCardHeader.

Nieobsługiwane przez aplikacje do obsługi czatu.

peekCardHeader

object (CardHeader)

Gdy wyświetlasz treści kontekstowe, nagłówek karty podglądu jest narzędziem zastępczym, dzięki któremu użytkownik może przechodzić między kartami na stronie głównej i kontekstami kontekstowymi.

Nieobsługiwane przez aplikacje do obsługi czatu.

Nagłówek karty

Reprezentuje nagłówek karty.

Zapis JSON
{
  "title": string,
  "subtitle": string,
  "imageType": enum (ImageType),
  "imageUrl": string,
  "imageAltText": string
}
Pola
title

string

Wymagany. Tytuł nagłówka karty. Nagłówek ma stałą wysokość: jeśli podasz zarówno tytuł, jak i podtytuł, każdy z nich będzie zajmować jeden wiersz. Jeśli podasz tylko tytuł, będzie on obejmować oba wiersze.

subtitle

string

Podtytuł nagłówka karty. Jeśli jest określony, znajduje się w osobnym wierszu poniżej title.

imageType

enum (ImageType)

Kształt używany do przycinania.

imageUrl

string

Adres URL HTTPS obrazu w nagłówku karty.

imageAltText

string

Tekst zastępczy obrazu, który jest używany przy ułatwieniach dostępu.

Typ obrazu

Kształt używany do przycinania.

Wartości w polu enum
SQUARE Wartość domyślna. Stosuje do maski kwadratową. Na przykład obraz o wymiarach 4 × 3 stanie się obrazem 3 × 3.
CIRCLE Stosuje do maski okrągłą. Na przykład obraz o wymiarach 4 × 3 zmienia się w koło o średnicy 3.

Sekcja

Sekcja zawiera kolekcję widżetów wyświetlanych w pionie w kolejności, w jakiej zostały określone.

Zapis JSON
{
  "header": string,
  "widgets": [
    {
      object (Widget)
    }
  ],
  "collapsible": boolean,
  "uncollapsibleWidgetsCount": integer
}
Pola
header

string

Tekst wyświetlany u góry sekcji. Obsługuje prosty tekst w formacie HTML. Więcej informacji znajdziesz w sekcjach Formatowanie tekstu w aplikacjach Google Chat i Formatowanie tekstu w dodatkach do Google Workspace.

widgets[]

object (Widget)

Wszystkie widżety w sekcji. Musi zawierać co najmniej jeden widżet.

collapsible

boolean

Wskazuje, czy ta sekcja jest zwijana.

Sekcje zwijane ukrywają niektóre lub wszystkie widżety, ale użytkownicy mogą je rozwinąć, klikając Pokaż więcej. Użytkownicy mogą ponownie ukrywać widżety, klikając Pokaż mniej.

Aby określić, które widżety są ukryte, podaj uncollapsibleWidgetsCount.

uncollapsibleWidgetsCount

integer

Liczba zwijanych widżetów, które są widoczne nawet po zwinięciu sekcji.

Jeśli na przykład sekcja zawiera 5 widżetów, a atrybut uncollapsibleWidgetsCount ma wartość 2, pierwsze 2 widżety są zawsze wyświetlane, a 3 ostatnie są domyślnie zwinięte. Pole uncollapsibleWidgetsCount jest uwzględniane tylko wtedy, gdy collapsible ma wartość true.

Widżet

Każda karta składa się z widżetów.

Widżet to obiekt złożony, który może zawierać tekst, obrazy, przyciski lub inne typy obiektów.

Zapis JSON
{
  "horizontalAlignment": enum (HorizontalAlignment),

  // Union field data can be only one of the following:
  "textParagraph": {
    object (TextParagraph)
  },
  "image": {
    object (Image)
  },
  "decoratedText": {
    object (DecoratedText)
  },
  "buttonList": {
    object (ButtonList)
  },
  "textInput": {
    object (TextInput)
  },
  "selectionInput": {
    object (SelectionInput)
  },
  "dateTimePicker": {
    object (DateTimePicker)
  },
  "divider": {
    object (Divider)
  },
  "grid": {
    object (Grid)
  },
  "columns": {
    object (Columns)
  }
  // End of list of possible types for union field data.
}
Pola
horizontalAlignment

enum (HorizontalAlignment)

Określa, czy widżety mają być wyrównane do lewej, prawej czy do środka kolumny.

Pole sumy: data. Widżet może zawierać tylko jeden z tych elementów. Aby wyświetlić więcej elementów, możesz użyć wielu pól widżetów. data może być tylko jedną z tych wartości:
textParagraph

object (TextParagraph)

Wyświetla akapit. Obsługuje prosty tekst w formacie HTML. Więcej informacji znajdziesz w sekcjach Formatowanie tekstu w aplikacjach Google Chat i Formatowanie tekstu w dodatkach do Google Workspace.

W poniższym pliku JSON pogrubiony zostanie tekst:

"textParagraph": {
  "text": "  <b>bold text</b>"
}
image

object (Image)

Wyświetla obraz.

Na przykład ten JSON tworzy obraz z tekstem alternatywnym:

"image": {
  "imageUrl":
  "https://developers.google.com/chat/images/quickstart-app-avatar.png",
  "altText": "Chat app avatar"
}
decoratedText

object (DecoratedText)

Wyświetla ozdobny element tekstowy.

Ten przykładowy kod JSON tworzy na przykład ozdobny widżet tekstowy z adresem e-mail:

"decoratedText": {
  "icon": {
    "knownIcon": "EMAIL"
  },
  "topLabel": "Email Address",
  "text": "sasha@example.com",
  "bottomLabel": "This is a new Email address!",
  "switchControl": {
    "name": "has_send_welcome_email_to_sasha",
    "selected": false,
    "controlType": "CHECKBOX"
  }
}
buttonList

object (ButtonList)

Lista przycisków.

Na przykład poniższy kod JSON tworzy 2 przyciski. Pierwszy to niebieski przycisk tekstowy, a drugi obraz – przycisk, który otwiera link.

"buttonList": {
  "buttons": [
    {
      "text": "Edit",
      "color": {
        "red": 0,
        "green": 0,
        "blue": 1,
        "alpha": 1
      },
      "disabled": true,
    },
    {
      "icon": {
        "knownIcon": "INVITE",
        "altText": "check calendar"
      },
      "onClick": {
        "openLink": {
          "url": "https://example.com/calendar"
        }
      }
    }
  ]
}
textInput

object (TextInput)

Wyświetla pole tekstowe, w którym użytkownicy mogą pisać.

Na przykład następujący kod JSON tworzy pole tekstowe do adresu e-mail:

"textInput": {
  "name": "mailing_address",
  "label": "Mailing Address"
}

W tym przykładzie ten kod JSON tworzy tekst w języku programowania z podpowiedziami statycznymi:

"textInput": {
  "name": "preferred_programing_language",
  "label": "Preferred Language",
  "initialSuggestions": {
    "items": [
      {
        "text": "C++"
      },
      {
        "text": "Java"
      },
      {
        "text": "JavaScript"
      },
      {
        "text": "Python"
      }
    ]
  }
}
selectionInput

object (SelectionInput)

Wyświetla element wyboru, który pozwala użytkownikom wybierać elementy. Elementami sterującymi mogą być pola wyboru, przyciski, przełączniki i menu.

Ten przykładowy plik JSON tworzy menu pozwalające użytkownikom wybrać rozmiar:

"selectionInput": {
  "name": "size",
  "label": "Size"
  "type": "DROPDOWN",
  "items": [
    {
      "text": "S",
      "value": "small",
      "selected": false
    },
    {
      "text": "M",
      "value": "medium",
      "selected": true
    },
    {
      "text": "L",
      "value": "large",
      "selected": false
    },
    {
      "text": "XL",
      "value": "extra_large",
      "selected": false
    }
  ]
}
dateTimePicker

object (DateTimePicker)

Wyświetla widżet, który umożliwia wpisywanie daty, godziny lub daty i godziny.

Na przykład ten JSON tworzy selektor daty i godziny, aby zaplanować spotkanie:

"dateTimePicker": {
  "name": "appointment_time",
  "label": "Book your appointment at:",
  "type": "DATE_AND_TIME",
  "valueMsEpoch": "796435200000"
}
divider

object (Divider)

Wyświetla poziomą linię pomiędzy widżetami.

Separatorem może być np. następujący kod JSON:

"divider": {
}
grid

object (Grid)

Wyświetla siatkę z elementami.

Siatka obsługuje dowolną liczbę kolumn i elementów. Liczba wierszy zależy od górnej granicy liczby elementów podzielonej przez liczbę kolumn. Siatka z 10 elementami i 2 kolumnami ma 5 wierszy. Siatka zawiera 11 elementów i 2 kolumny, w 6 wierszy.

Na przykład poniższy kod JSON tworzy 2-kolumnową siatkę z jednym elementem:

"grid": {
  "title": "A fine collection of items",
  "columnCount": 2,
  "borderStyle": {
    "type": "STROKE",
    "cornerRadius": 4
  },
  "items": [
    {
      "image": {
        "imageUri": "https://www.example.com/image.png",
        "cropStyle": {
          "type": "SQUARE"
        },
        "borderStyle": {
          "type": "STROKE"
        }
      },
      "title": "An item",
      "textAlignment": "CENTER"
    }
  ],
  "onClick": {
    "openLink": {
      "url": "https://www.example.com"
    }
  }
}
columns

object (Columns)

Wyświetla do 2 kolumn.

Aby uwzględnić więcej niż 2 kolumny lub użyć wierszy, użyj widżetu Grid.

Na przykład poniższy kod JSON tworzy 2 kolumny, z których każda zawiera akapit:

"columns": {
  "columnItems": [
    {
      "horizontalSizeStyle": "FILL_AVAILABLE_SPACE",
      "horizontalAlignment": "CENTER",
      "verticalAlignment": "CENTER",
      "widgets": [
        {
          "textParagraph": {
            "text": "First column text paragraph"
          }
        }
      ]
    },
    {
      "horizontalSizeStyle": "FILL_AVAILABLE_SPACE",
      "horizontalAlignment": "CENTER",
      "verticalAlignment": "CENTER",
      "widgets": [
        {
          "textParagraph": {
            "text": "Second column text paragraph"
          }
        }
      ]
    }
  ]
}

Akapit tekstowy

Akapit z tekstem, który obsługuje formatowanie. Więcej informacji znajdziesz w sekcjach Formatowanie tekstu w aplikacjach Google Chat i Formatowanie tekstu w dodatkach do Google Workspace.

Zapis JSON
{
  "text": string
}
Pola
text

string

Tekst widoczny w widżecie.

Obraz

Obraz określony za pomocą adresu URL, który może wykonywać działanie onClick.

Zapis JSON
{
  "imageUrl": string,
  "onClick": {
    object (OnClick)
  },
  "altText": string
}
Pola
imageUrl

string

Adres URL HTTPS, który hostuje obraz.

Na przykład:

https://developers.google.com/chat/images/quickstart-app-avatar.png
onClick

object (OnClick)

To kliknięcie wywołuje to zdarzenie, gdy użytkownik klika obraz.

altText

string

Tekst zastępczy obrazu, który jest używany przy ułatwieniach dostępu.

Po kliknięciu

Wskazuje, jak zareagować, gdy użytkownik kliknie interaktywny element na karcie, np. przycisk.

Zapis JSON
{

  // Union field data can be only one of the following:
  "action": {
    object (Action)
  },
  "openLink": {
    object (OpenLink)
  },
  "openDynamicLinkAction": {
    object (Action)
  },
  "card": {
    object (Card)
  }
  // End of list of possible types for union field data.
}
Pola

Pole sumy: data.

data może być tylko jedną z tych wartości:

action

object (Action)

Jeśli zasada jest określona, działanie jest wywoływane przez to zdarzenie onClick.

card

object (Card)

Nowa karta jest przesyłana do stosu kart po kliknięciu, jeśli został określony.

Obsługiwana przez dodatki do Google Workspace, ale nie przez aplikacje Google Chat.

Czynność

Działanie opisujące zachowanie podczas przesyłania formularza. Możesz na przykład wywołać skrypt Apps Script, aby obsłużyć formularz. Jeśli działanie zostanie aktywowane, wartości formularza zostaną przesłane na serwer.

Zapis JSON
{
  "function": string,
  "parameters": [
    {
      object (ActionParameter)
    }
  ],
  "loadIndicator": enum (LoadIndicator),
  "persistValues": boolean,
  "interaction": enum (Interaction)
}
Pola
function

string

Funkcja niestandardowa, która ma być wywoływana po kliknięciu lub aktywowaniu elementu zawierającego.

Więcej informacji znajdziesz w artykule Tworzenie interaktywnych kart.

parameters[]

object (ActionParameter)

Lista parametrów działania.

loadIndicator

enum (LoadIndicator)

Określa wskaźnik wczytywania wyświetlany podczas wykonywania działania.

persistValues

boolean

Wskazuje, czy po formularzu działanie formularza pozostaje aktywne. Wartością domyślną jest false.

Jeśli pole true zawiera wartości, po wypełnieniu pola działanie pozostaje aktywne. Aby pozwolić użytkownikowi na wprowadzanie zmian podczas przetwarzania działania, ustaw LoadIndicator na NONE. W przypadku kart kart w aplikacjach Google Chat musisz też ustawić wartość ResponseType dla działania na UPDATE_MESSAGE i użyć tej samej wartości cardId z karty, która zawiera działanie.

Jeśli false, wartości formularza zostaną wyczyszczone po wywołaniu działania. Aby uniemożliwić użytkownikowi wprowadzanie zmian podczas przetwarzania działania, ustaw wartość LoadIndicator na SPINNER.

interaction

enum (Interaction)

Opcjonalnie. Wymagane przy otwieraniu okna.

Co zrobić w odpowiedzi na interakcję użytkownika, np. kliknięcie przycisku w wiadomości na karcie.

Jeśli nie określono inaczej, aplikacja reaguje w zwykły sposób, uruchamiając action, np. otwierając link lub uruchamiając funkcję.

Jeśli określisz interaction, aplikacja może reagować w specjalny sposób. Jeśli na przykład ustawisz interaction na wartość OPEN_DIALOG, aplikacja będzie mogła otwierać okno. Jeśli podasz wartość, wskaźnik ładowania się nie wyświetli.

Obsługiwane przez aplikacje do obsługi czatu, ale nie w ramach dodatków do Google Workspace. Jeśli dodatek jest określony jako dodatek, cała karta jest usuwana i nic nie jest wyświetlane w kliencie.

Parametr działania

Lista parametrów ciągu znaków, które mają zostać podane po wywołaniu metody działania. Możesz np. wybrać 3 przyciski drzemki: drzemka teraz, drzemka na dzień lub drzemkę w przyszłym tygodniu. Można użyć właściwości action method = snooze(), przekazując typ drzemki i czas drzemki na liście parametrów ciągu znaków.

Więcej informacji: CommonEventObject.

Zapis JSON
{
  "key": string,
  "value": string
}
Pola
key

string

Nazwa parametru skryptu działania.

value

string

Wartość parametru.

Wskaźnik obciążenia

Określa wskaźnik wczytywania wyświetlany podczas wykonywania działania.

Wartości w polu enum
SPINNER Wyświetla wskaźnik postępu wczytywania treści.
NONE Nic nie jest wyświetlane.

Interakcja

Opcjonalnie. Wymagane przy otwieraniu okna.

Co zrobić w odpowiedzi na interakcję użytkownika, np. kliknięcie przycisku w wiadomości na karcie.

Jeśli nie określono inaczej, aplikacja reaguje w zwykły sposób, uruchamiając action, np. otwierając link lub uruchamiając funkcję.

Jeśli określisz interaction, aplikacja może reagować w specjalny sposób. Jeśli na przykład ustawisz interaction na wartość OPEN_DIALOG, aplikacja będzie mogła otwierać okno.

Jeśli podasz wartość, wskaźnik ładowania się nie wyświetli.

Obsługiwane przez aplikacje do obsługi czatu, ale nie w ramach dodatków do Google Workspace. Jeśli dodatek jest określony jako dodatek, cała karta jest usuwana i nic nie jest wyświetlane w kliencie.

Wartości w polu enum
INTERACTION_UNSPECIFIED Wartość domyślna. action działa normalnie.
OPEN_DIALOG

Otwiera okno – interfejs użytkownika w postaci okna, który umożliwia aplikacjom Google Chat interakcję z użytkownikami.

Obsługiwane tylko przez aplikacje do obsługi czatu w odpowiedzi na kliknięcie przycisku na karcie.

Nieobsługiwane przez dodatki do Google Workspace. Jeśli dodatek jest określony jako dodatek, cała karta jest usuwana i nic nie jest wyświetlane w kliencie.

OpenAs

Gdy działanie OnClick otwiera link, klient może otworzyć je w pełnym rozmiarze (jeśli to ramka) lub użyć nakładki (takiej jak wyskakujące okienko). Implementacja zależy od możliwości platformy klienta, a wybrana wartość może zostać zignorowana, jeśli klient jej nie obsługuje. FULL_SIZE jest obsługiwany przez wszystkie klienty.

Obsługiwana przez dodatki do Google Workspace, ale nie przez aplikacje Google Chat.

Wartości w polu enum
FULL_SIZE Link otwiera się w pełnym rozmiarze (jeśli jest to ramka używana przez klienta).
OVERLAY Link otwiera się w postaci nakładki, np. w wyskakującym okienku.

OnClose

Co robi klient, gdy link otwarty przez działanie OnClick zostanie zamknięty.

Implementacja zależy od możliwości platformy klienta. Na przykład przeglądarka może otworzyć link w wyskakującym okienku z metodą OnClose.

Jeśli moduły obsługi OnOpen i OnClose są ustawione, a platforma klienta nie może obsługiwać obu wartości, pierwszeństwo ma OnClose.

Obsługiwana przez dodatki do Google Workspace, ale nie przez aplikacje Google Chat.

Wartości w polu enum
NOTHING Wartość domyślna. Karta nie jest ponownie ładowana i nic się nie dzieje.
RELOAD

Ponownie wczyta kartę po zamknięciu okna podrzędnego.

Jeśli zostanie użyty razem z OpenAs.OVERLAY, okno podrzędne będzie działać jako okno modalne, a karta nadrzędna będzie blokowana do momentu zamknięcia okna.

Dekorowany tekst

Widżet wyświetlający tekst z opcjonalnymi elementami dekoracyjnymi, np. etykietą nad lub pod tekstem, ikoną znajdującą się przed tekstem, widżetem wyboru lub przyciskiem po tekście.

Zapis JSON
{
  "icon": {
    object (Icon)
  },
  "startIcon": {
    object (Icon)
  },
  "topLabel": string,
  "text": string,
  "wrapText": boolean,
  "bottomLabel": string,
  "onClick": {
    object (OnClick)
  },

  // Union field control can be only one of the following:
  "button": {
    object (Button)
  },
  "switchControl": {
    object (SwitchControl)
  },
  "endIcon": {
    object (Icon)
  }
  // End of list of possible types for union field control.
}
Pola
icon
(deprecated)

object (Icon)

Wycofano na rzecz startIcon.

startIcon

object (Icon)

Ikona wyświetlana przed tekstem.

topLabel

string

Tekst wyświetlany nad tekstem text. Zawsze skracaj.

text

string

Wymagany. Tekst główny.

Obsługuje proste formatowanie. Więcej informacji znajdziesz w sekcjach Formatowanie tekstu w aplikacjach Google Chat i Formatowanie tekstu w dodatkach do Google Workspace.

wrapText

boolean

Ustawienie zawijania tekstu. Jeśli true, tekst zostanie zawijany i wyświetlany w kilku wierszach. W przeciwnym razie tekst zostanie skrócony.

Dotyczy tylko: text, a nie topLabel i bottomLabel.

bottomLabel

string

Tekst widoczny poniżej: text. Zawsze się zamyka.

onClick

object (OnClick)

To działanie jest wywoływane, gdy użytkownicy klikną topLabel lub bottomLabel.

Pole sumy: control. Przycisk, przełącznik, pole wyboru lub obraz wyświetlany po prawej stronie tekstu w widżecie decoratedText. control może być tylko jedną z tych wartości:
button

object (Button)

Przycisk, który użytkownik może kliknąć, aby wywołać działanie.

switchControl

object (SwitchControl)

Widżet przełączania, który użytkownik może kliknąć, aby zmienić stan i aktywować działanie

endIcon

object (Icon)

Ikona wyświetlana po tekście.

Obsługuje ikony wbudowane i niestandardowe.

Ikona

Ikona wyświetlana w widżecie na karcie.

Obsługuje ikony wbudowane i niestandardowe.

Zapis JSON
{
  "altText": string,
  "imageType": enum (ImageType),

  // Union field icons can be only one of the following:
  "knownIcon": string,
  "iconUrl": string
  // End of list of possible types for union field icons.
}
Pola
altText

string

Opcjonalnie. Opis ikony ułatwień dostępu. Jeśli wartość nie jest określona, podawana jest wartość domyślna Button. Dobrze jest utworzyć przydatny opis tego, co wyświetla się ikona (w razie potrzeby). na przykład A user's account portrait lub Opens a new browser tab and navigates to the Google Chat developer documentation at https://developers.google.com/chat.

Jeśli ikonę jest ustawiona w Button, altText pojawi się jako tekst pomocniczy, gdy użytkownik najedzie na przycisk. Jeśli jednak przycisk ustawia też typ text, wartość altText jest ignorowana.

imageType

enum (ImageType)

Styl przycinania zastosowany do obrazu. W niektórych przypadkach zastosowanie przycięcia w formacie CIRCLE powoduje, że obraz jest pobierany jako większy niż wbudowana ikona.

Pole sumy: icons. Ikona wyświetlana w widżecie na karcie. icons może być tylko jedną z tych wartości:
knownIcon

string

Wyświetlaj jedną z wbudowanych ikon Google Workspace.

Aby na przykład wyświetlić ikonę samolotu, podaj AIRPLANE. W przypadku autobusu określ BUS.

Pełną listę obsługiwanych ikon znajdziesz w sekcji Ikony wbudowane.

iconUrl

string

Wyświetlaj ikonę niestandardową hostowaną pod adresem URL HTTPS.

Na przykład:

"iconUrl":
"https://developers.google.com/chat/images/quickstart-app-avatar.png"

Obsługiwane typy plików to .png i .jpg.

Przycisk

Tekst, ikona lub przycisk z tekstem i ikoną, które użytkownicy mogą klikać.

Aby umożliwić kliknięcie obrazu, określ Image (nie ImageComponent) i określ działanie onClick.

Zapis JSON
{
  "text": string,
  "icon": {
    object (Icon)
  },
  "color": {
    object (Color)
  },
  "onClick": {
    object (OnClick)
  },
  "disabled": boolean,
  "altText": string
}
Pola
text

string

Tekst wyświetlany na przycisku.

icon

object (Icon)

Obraz ikony. Jeśli ustawione są icon i text, przed tekstem pojawia się ikona.

color

object (Color)

Po ustawieniu przycisk jest wypełniany jednolitym kolorem tła, a kolor czcionki zmienia się, aby zachować kontrast z kolorem tła. Na przykład ustawienie niebieskiego tła powoduje, że pojawia się biały tekst.

Jeśli zasada jest nieskonfigurowana, tło obrazu jest białe, a czcionka ma kolor niebieski.

W przypadku czerwonych, zielonych i niebieskich wartości każdego pola można podać float wartość, którą możesz wyrazić na 2 sposoby: jako liczbę z zakresu od 0 do 255 podzieloną przez 255 (153/255) lub jako wartość od 0 do 1 (0,6). 0 oznacza brak koloru i 1 lub 255/255 oznacza pełną obecność tego koloru w skali RGB.

Opcjonalnie ustaw alpha, aby ustawić poziom przezroczystości za pomocą tego równania:

pixel color = alpha * (this color) + (1.0 - alpha) * (background color)

W przypadku alpha wartość 1 odpowiada jednolitemu kolorowi, wartość 0 odpowiada całkowicie przezroczystemu kolorowi.

Na przykład ten kolor to półprzezroczysty czerwony:

"color": {
   "red": 1,
   "green": 0,
   "blue": 0,
   "alpha": 0.5
}
onClick

object (OnClick)

Wymagany. Działanie wykonywane, gdy użytkownik kliknie przycisk – na przykład otworzy hiperlink lub uruchomi funkcję niestandardową.

disabled

boolean

Jeśli true jest wyświetlany, przycisk jest nieaktywny i nie reaguje na działania użytkownika.

altText

string

Tekst alternatywny używany przy ułatwieniach dostępu.

Ustaw tekst opisowy informujący użytkowników o przeznaczeniu przycisku. Jeśli na przykład przycisk uruchamia hiperlink, możesz napisać: „Otwiera nową kartę przeglądarki i otwiera dokumentację dla deweloperów Google Chat na stronie https://developers.google.com/chat”.

Kolor

Odzwierciedla kolor w przestrzeni kolorów RGBA. Ta reprezentacja została zaprojektowana z myślą o prostości w przeliczaniu na różne kolory w różnych językach, a nie tylko pod kątem kompatybilności. Na przykład pola tej reprezentacji można trywizować do konstruktora java.awt.Color w Javie; można je też podawać do metody +colorWithRed:green:blue:alpha UIColor w systemie iOS. Niewielką ilość można łatwo sformatować w ramach CSS rgba() w kodzie CSS.

Na tej stronie nie ma informacji o absolutnej przestrzeni kolorów, która powinna być użyta do zinterpretowania wartości RGB, na przykład sRGB, Adobe RGB, DCI-P3 i BT.2020. Domyślnie aplikacje powinny przyjąć przestrzeń kolorów sRGB.

Jeśli trzeba ustalić równość kolorów, implementacje dwóch kolorów należy traktować jako równoważne, chyba że wszystkie ich wartości czerwone, zielone, niebieskie i alfa różnią się maksymalnie 1e-5.

Przykład (Java):

 import com.google.type.Color;

 // ...
 public static java.awt.Color fromProto(Color protocolor) {
   float alpha = protocolor.hasAlpha()
       ? protocolor.getAlpha().getValue()
       : 1.0;

   return new java.awt.Color(
       protocolor.getRed(),
       protocolor.getGreen(),
       protocolor.getBlue(),
       alpha);
 }

 public static Color toProto(java.awt.Color color) {
   float red = (float) color.getRed();
   float green = (float) color.getGreen();
   float blue = (float) color.getBlue();
   float denominator = 255.0;
   Color.Builder resultBuilder =
       Color
           .newBuilder()
           .setRed(red / denominator)
           .setGreen(green / denominator)
           .setBlue(blue / denominator);
   int alpha = color.getAlpha();
   if (alpha != 255) {
     result.setAlpha(
         FloatValue
             .newBuilder()
             .setValue(((float) alpha) / denominator)
             .build());
   }
   return resultBuilder.build();
 }
 // ...

Przykład (iOS / Obj-C):

 // ...
 static UIColor* fromProto(Color* protocolor) {
    float red = [protocolor red];
    float green = [protocolor green];
    float blue = [protocolor blue];
    FloatValue* alpha_wrapper = [protocolor alpha];
    float alpha = 1.0;
    if (alpha_wrapper != nil) {
      alpha = [alpha_wrapper value];
    }
    return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
 }

 static Color* toProto(UIColor* color) {
     CGFloat red, green, blue, alpha;
     if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
       return nil;
     }
     Color* result = [[Color alloc] init];
     [result setRed:red];
     [result setGreen:green];
     [result setBlue:blue];
     if (alpha <= 0.9999) {
       [result setAlpha:floatWrapperWithValue(alpha)];
     }
     [result autorelease];
     return result;
}
// ...

Przykład (JavaScript):

// ...

var protoToCssColor = function(rgb_color) {
   var redFrac = rgb_color.red || 0.0;
   var greenFrac = rgb_color.green || 0.0;
   var blueFrac = rgb_color.blue || 0.0;
   var red = Math.floor(redFrac * 255);
   var green = Math.floor(greenFrac * 255);
   var blue = Math.floor(blueFrac * 255);

   if (!('alpha' in rgb_color)) {
      return rgbToCssColor(red, green, blue);
   }

   var alphaFrac = rgb_color.alpha.value || 0.0;
   var rgbParams = [red, green, blue].join(',');
   return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
};

var rgbToCssColor = function(red, green, blue) {
  var rgbNumber = new Number((red << 16) | (green << 8) | blue);
  var hexString = rgbNumber.toString(16);
  var missingZeros = 6 - hexString.length;
  var resultBuilder = ['#'];
  for (var i = 0; i < missingZeros; i++) {
     resultBuilder.push('0');
  }
  resultBuilder.push(hexString);
  return resultBuilder.join('');
};

// ...
Zapis JSON
{
  "red": number,
  "green": number,
  "blue": number,
  "alpha": number
}
Pola
red

number

Czerwony kolor w postaci wartości z przedziału [0, 1].

green

number

Zielony kolor w wartościach z przedziału [0, 1].

blue

number

Niebieski kolor w wartościach z przedziału [0, 1].

alpha

number

Odsetek tego koloru, który należy zastosować w pikselu. Oznacza to, że końcowy kolor piksela jest określany za pomocą równania:

pixel color = alpha * (this color) + (1.0 - alpha) * (background color)

Oznacza to, że wartość 1,0 odpowiada jednolitemu kolorowi, a wartość 0,0 odpowiada całkowicie przezroczystemu kolorowi. Korzysta on z kodu towarzyszącego, a nie z prostego skalarnego skalarnego, dzięki czemu można odróżnić wartość domyślną od ustawionej. Jeśli ten warunek zostanie pominięty, obiekt koloru jest renderowany jako jednolity kolor (tak jakby wartość alfa wynosiła 1,0).

SwitchControl

Przełącznik stylu lub pole wyboru w widżecie decoratedText.

Obsługiwane tylko w widżecie decoratedText.

Zapis JSON
{
  "name": string,
  "value": string,
  "selected": boolean,
  "onChangeAction": {
    object (Action)
  },
  "controlType": enum (ControlType)
}
Pola
name

string

Nazwa, za pomocą której definiuje się widżet przełączania w zdarzeniu wprowadzania danych z formularza.

Więcej informacji na temat pracy z danymi z formularzy znajdziesz w artykule Odbieranie danych formularza.

value

string

Wartość wpisana przez użytkownika, zwracana w ramach zdarzenia wejściowego formularza.

Więcej informacji na temat pracy z danymi z formularzy znajdziesz w artykule Odbieranie danych formularza.

selected

boolean

Gdy zasada true jest włączona, przełącznik jest wybierany.

onChangeAction

object (Action)

Działanie, które ma być wykonywane po zmianie stanu zmiany, np. jakie funkcje mają być wykonywane.

controlType

enum (ControlType)

Wygląd przełącznika w interfejsie.

Typ elementu sterującego

Wygląd przełącznika w interfejsie.

Wartości w polu enum
SWITCH Przełącznik.
CHECKBOX Wycofano na rzecz CHECK_BOX.
CHECK_BOX Pole wyboru.

Lista przycisków

Lista przycisków rozmieszczonych w poziomie.

Zapis JSON
{
  "buttons": [
    {
      object (Button)
    }
  ]
}
Pola
buttons[]

object (Button)

Tablica przycisków.

Wprowadzanie tekstu

Pole, w którym użytkownicy mogą wpisać tekst. Obsługuje sugestie i działanie w przypadku zmiany.

Aplikacje do obsługi czatu otrzymują i przetwarzają wartość wprowadzanego tekstu podczas zdarzeń w formularzu. Więcej informacji na temat pracy z danymi z formularzy znajdziesz w artykule Odbieranie danych formularza.

Jeśli chcesz zbierać od użytkowników niezdefiniowane lub abstrakcyjne dane, wpisz tekst. Aby zbierać dane zdefiniowane lub wyliczane od użytkowników, użyj widżetu SelectionInput.

Zapis JSON
{
  "name": string,
  "label": string,
  "hintText": string,
  "value": string,
  "type": enum (Type),
  "onChangeAction": {
    object (Action)
  },
  "initialSuggestions": {
    object (Suggestions)
  },
  "autoCompleteAction": {
    object (Action)
  }
}
Pola
name

string

Nazwa określająca dane wejściowe w zdarzeniu wprowadzania danych z formularza.

Więcej informacji na temat pracy z danymi z formularzy znajdziesz w artykule Odbieranie danych formularza.

label

string

Tekst wyświetlany nad polem wprowadzania tekstu w interfejsie.

Podaj tekst, który pomoże użytkownikowi wpisać informacje, których potrzebuje Twoja aplikacja. Jeśli na przykład prosisz kogoś o imię, ale potrzebujesz imienia, wpisz surname zamiast name.

Wymagany, jeśli właściwość hintText nie jest określona. W przeciwnym razie (opcjonalnie).

hintText

string

Tekst wyświetlany pod polem wprowadzania tekstu, który ma zachęcić użytkowników do wpisania określonej wartości. Ten tekst jest zawsze widoczny.

Wymagany, jeśli właściwość label nie jest określona. W przeciwnym razie (opcjonalnie).

value

string

Wartość wpisana przez użytkownika, zwracana w ramach zdarzenia wejściowego formularza.

Więcej informacji na temat pracy z danymi z formularzy znajdziesz w artykule Odbieranie danych formularza.

type

enum (Type)

Sposób, w jaki w interfejsie wyświetlane jest pole do wprowadzania tekstu. np. czy pole jest jednowierszowe czy wielowierszowe.

onChangeAction

object (Action)

Co zrobić, gdy w polu tekstowym pojawi się zmiana. Na przykład użytkownik dodający do pola lub usuwając tekst.

Przykładowe działania to uruchomienie własnej funkcji lub otwarcie okna w Google Chat.

initialSuggestions

object (Suggestions)

Sugerowane wartości, które użytkownicy mogą wpisać. Te wartości pojawiają się, gdy użytkownicy klikają pole do wprowadzania tekstu. Gdy użytkownicy piszą, sugerowane wartości są dynamicznie filtrowane zgodnie z wpisanym tekstem.

Na przykład pole do wprowadzania tekstu w języku programowania może proponować język Java, JavaScript, Python i C++. Gdy użytkownicy zaczną wpisywać Jav, na liście sugestii pojawią się filtry Java i JavaScript.

Sugerowane wartości pomagają użytkownikom wpisywać wartości, które mogą być przydatne w aplikacji. Gdy odwołujemy się do JavaScriptu, niektórzy użytkownicy mogą wpisać javascript, a inne java script. Sugerowanie właściwości JavaScript może ujednolicić sposób interakcji użytkowników z aplikacją.

Jeśli zasada jest określona, właściwość TextInput.type ma zawsze wartość SINGLE_LINE, nawet jeśli jest ustawiona na MULTIPLE_LINE.

autoCompleteAction

object (Action)

Opcjonalnie. Określ, jakie działania mają być wykonywane, gdy pole do wprowadzania tekstu zawiera sugestie dla użytkowników, którzy z niego korzystają.

Jeśli nie określono inaczej, sugestie są ustawiane przez zasadę initialSuggestions i są przetwarzane przez klienta.

Jeśli zasada jest skonfigurowana, aplikacja wykonuje opisane tu działanie, takie jak uruchamianie funkcji niestandardowej.

Obsługiwana przez dodatki do Google Workspace, ale nie przez aplikacje Google Chat.

Typ

Sposób, w jaki w interfejsie wyświetlane jest pole do wprowadzania tekstu. np. pole wprowadzania tekstu jednowierszowego czy wielowierszowe.

Jeśli określono initialSuggestions, type ma zawsze wartość SINGLE_LINE, nawet jeśli ustawiona jest wartość MULTIPLE_LINE.

Wartości w polu enum
SINGLE_LINE Pole do wprowadzania tekstu ma stałą wysokość 1 wiersza.
MULTIPLE_LINE Pole do wprowadzania tekstu ma stałą wysokość wielu wierszy.

Sugestie

Sugerowane wartości, które użytkownicy mogą wpisać. Te wartości pojawiają się, gdy użytkownicy klikają pole do wprowadzania tekstu. Gdy użytkownicy piszą, sugerowane wartości są dynamicznie filtrowane zgodnie z wpisanym tekstem.

Na przykład pole do wprowadzania języka dla języka programowania może proponować język Java, JavaScript, Python i C++. Gdy użytkownicy zaczną wpisywać Jav, na liście sugestii pojawią się Java i JavaScript.

Sugerowane wartości pomagają użytkownikom wpisywać wartości, które mogą być przydatne w aplikacji. Gdy odwołujemy się do JavaScriptu, niektórzy użytkownicy mogą wpisać javascript, a inne java script. Sugerowanie właściwości JavaScript może ujednolicić sposób interakcji użytkowników z aplikacją.

Jeśli zasada jest określona, właściwość TextInput.type ma zawsze wartość SINGLE_LINE, nawet jeśli jest ustawiona na MULTIPLE_LINE.

Zapis JSON
{
  "items": [
    {
      object (SuggestionItem)
    }
  ]
}
Pola
items[]

object (SuggestionItem)

Lista sugestii używanych do autouzupełniania rekomendacji w polach wprowadzania tekstu.

Sugestia elementu

Jedna z sugerowanych wartości, które użytkownicy mogą wpisać w polu tekstowym.

Zapis JSON
{

  // Union field content can be only one of the following:
  "text": string
  // End of list of possible types for union field content.
}
Pola

Pole sumy: content.

content może być tylko jedną z tych wartości:

text

string

Wartość sugerowanego pola wprowadzania tekstu. Jest to odpowiednik tekstu wpisanego przez użytkownika.

Dane wejściowe – wybór

Widżet tworzący jeden lub więcej elementów interfejsu, które użytkownicy mogą wybrać. Na przykład menu lub pola wyboru. Możesz użyć tego widżetu do zbierania danych, które mogą zostać przewidziane lub wyliczone.

Aplikacje do obsługi czatu przetwarzają wartości wybrane lub wpisane przez użytkowników. Więcej informacji na temat pracy z danymi z formularzy znajdziesz w artykule Odbieranie danych formularza.

Aby zbierać od użytkowników niezdefiniowane lub abstrakcyjne dane, użyj widżetu TextInput.

Zapis JSON
{
  "name": string,
  "label": string,
  "type": enum (SelectionType),
  "items": [
    {
      object (SelectionItem)
    }
  ],
  "onChangeAction": {
    object (Action)
  }
}
Pola
name

string

Nazwa określająca dane wejściowe wybrane w zdarzeniu wprowadzania danych z formularza.

Więcej informacji na temat pracy z danymi z formularzy znajdziesz w artykule Odbieranie danych formularza.

label

string

Tekst wyświetlany nad polem wyboru w interfejsie.

Podaj tekst, który pomoże użytkownikowi wpisać informacje, których potrzebuje Twoja aplikacja. Jeśli na przykład użytkownicy wybierają z menu opcję pilnego biletu do pracy, może ona mieć etykietę „Pilne” lub „Wybierz pilne”.

type

enum (SelectionType)

Typ elementów wyświetlanych użytkownikom w widżecie SelectionInput. Typy wyboru obsługują różne typy interakcji. Na przykład użytkownicy mogą zaznaczać co najmniej jedno pole wyboru, ale z menu mogą wybrać tylko jedną wartość.

items[]

object (SelectionItem)

Tablica elementów do wyboru. Przykładem może być tablica opcji lub pól wyboru. Obsługuje do 100 elementów.

onChangeAction

object (Action)

Jeśli wybierzesz ten warunek, formularz zostanie przesłany po zmianie wyboru. Jeśli nie podasz odpowiedzi, musisz określić osobny przycisk, który przesyła formularz.

Więcej informacji na temat pracy z danymi z formularzy znajdziesz w artykule Odbieranie danych formularza.

Typ wyboru

Format elementów, które użytkownicy mogą wybierać. Różne opcje obsługują różne typy interakcji. Użytkownicy mogą na przykład zaznaczać wiele pól wyboru, ale z menu mogą wybrać tylko jeden element.

Każdy wybór typu danych obsługuje 1 typ wyboru. Nie można np. łączyć pól wyboru i przełączników.

Wartości w polu enum
CHECK_BOX Zestaw pól wyboru. Użytkownicy mogą zaznaczyć jedno lub więcej pól wyboru.
RADIO_BUTTON Zestaw opcji. Użytkownicy mogą wybrać tylko jedną opcję.
SWITCH Zestaw przełączników. Użytkownicy mogą włączyć co najmniej 1 przełącznik.
DROPDOWN Menu. Użytkownicy mogą wybrać jeden element z menu.

Element wyboru

Element, który użytkownicy mogą wybierać w danych wejściowych, takich jak pole wyboru lub przełącznik.

Zapis JSON
{
  "text": string,
  "value": string,
  "selected": boolean
}
Pola
text

string

Tekst określający lub opisujący produkt użytkownikom.

value

string

Wartość powiązana z tym elementem. Klient powinien używać go jako wartości wejściowej formularza.

Więcej informacji na temat pracy z danymi z formularzy znajdziesz w artykule Odbieranie danych formularza.

selected

boolean

Jeśli wybrano element true, wybierany jest więcej niż 1 element. Jeśli wybierzesz więcej niż jeden element dla opcji i menu rozwijanego, pierwszy wybrany element zostanie odebrany, a pozostałe zostaną zignorowane.

Selektor daty i godziny

To ustawienie pozwala użytkownikom wpisać datę, godzinę lub datę i godzinę.

Użytkownicy mogą wprowadzać tekst lub wybierać daty i godziny za pomocą selektora. Jeśli użytkownicy wpiszą nieprawidłową datę lub godzinę, selektor wyświetli komunikat z prośbą o prawidłowe podanie informacji.

Zapis JSON
{
  "name": string,
  "label": string,
  "type": enum (DateTimePickerType),
  "valueMsEpoch": string,
  "timezoneOffsetDate": integer,
  "onChangeAction": {
    object (Action)
  }
}
Pola
name

string

Nazwa, za pomocą której określony jest element DateTimePicker w zdarzeniu danych wejściowych w formularzu.

Więcej informacji na temat pracy z danymi z formularzy znajdziesz w artykule Odbieranie danych formularza.

label

string

Tekst zachęcający użytkowników do wpisania daty, godziny lub daty i godziny. Jeśli na przykład użytkownicy planują spotkanie, użyj etykiety takiej jak Appointment date lub Appointment date and time.

type

enum (DateTimePickerType)

Określa, czy widżet obsługuje wprowadzanie daty, godziny lub daty i godziny.

valueMsEpoch

string (int64 format)

Wartość domyślna wyświetlana w widżecie w milisekundach od czasu uniksowego.

Określ wartość w zależności od typu selektora (DateTimePickerType):

  • DATE_AND_TIME: data i godzina w kalendarzu w strefie czasowej UTC. Na przykład aby podać datę 1 stycznia 2023 r., godz. 12:00 UTC, użyj 1672574400000.
  • DATE_ONLY: data w kalendarzu o godzinie 00:00:00 czasu UTC. Na przykład do 1 stycznia 2023 r. użyj wartości 1672531200000.
  • TIME_ONLY: czas w strefie czasowej UTC. Na przykład, aby uwzględnić godzinę 12:00, wpisz 43200000 (lub 12 * 60 * 60 * 1000).
timezoneOffsetDate

integer

Liczba określająca przesunięcie czasu względem strefy czasowej UTC w minutach. Jeśli zasada jest ustawiona, wartość valueMsEpoch jest wyświetlana w określonej strefie czasowej. Jeśli zasada jest nieskonfigurowana, wartością domyślną jest ustawienie strefy czasowej użytkownika.

onChangeAction

object (Action)

Wywoływane, gdy użytkownik kliknie Zapisz lub Wyczyść w interfejsie DateTimePicker.

Typ daty i godziny

Format daty i godziny w widżecie DateTimePicker. Określa, czy użytkownicy mogą wpisać datę, godzinę lub datę i godzinę.

Wartości w polu enum
DATE_AND_TIME Użytkownicy wpisują datę i godzinę.
DATE_ONLY Użytkownicy wpisują datę.
TIME_ONLY Użytkownicy wpisują godzinę.

Separator

Wyświetla linię między widżetami jako poziomą linię.

Separatorem może być np. następujący kod JSON:

"divider": {}

Siatka

Wyświetla siatkę z elementami. Elementy mogą zawierać tylko tekst lub obrazy.

Siatka obsługuje dowolną liczbę kolumn i elementów. Liczba wierszy zależy od elementów podzielonych przez kolumny. Siatka z 10 elementami i 2 kolumnami ma 5 wierszy. Siatka zawiera 11 elementów i 2 kolumny, w 6 wierszy.

W przypadku kolumn elastycznych lub aby uwzględnić więcej niż tekst lub obrazy, użyj Columns.

Na przykład poniższy kod JSON tworzy 2-kolumnową siatkę z jednym elementem:

"grid": {
  "title": "A fine collection of items",
  "columnCount": 2,
  "borderStyle": {
    "type": "STROKE",
    "cornerRadius": 4
  },
  "items": [
    {
      "image": {
        "imageUri": "https://www.example.com/image.png",
        "cropStyle": {
          "type": "SQUARE"
        },
        "borderStyle": {
          "type": "STROKE"
        }
      },
      "title": "An item",
      "textAlignment": "CENTER"
    }
  ],
  "onClick": {
    "openLink": {
      "url": "https://www.example.com"
    }
  }
}
Zapis JSON
{
  "title": string,
  "items": [
    {
      object (GridItem)
    }
  ],
  "borderStyle": {
    object (BorderStyle)
  },
  "columnCount": integer,
  "onClick": {
    object (OnClick)
  }
}
Pola
title

string

Tekst wyświetlany w nagłówku siatki.

items[]

object (GridItem)

Elementy do wyświetlenia w siatce.

borderStyle

object (BorderStyle)

Styl obramowania, który zostanie zastosowany do każdego elementu siatki.

columnCount

integer

Liczba kolumn wyświetlanych w siatce. Jeśli nie określisz wartości tego pola, będzie używana wartość domyślna, która różni się w zależności od tego, gdzie wyświetla się siatka (dialog i element towarzyszący).

onClick

object (OnClick)

To wywołanie zwrotne jest używane przez każdy element siatki, ale z identyfikatorem i indeksem elementu na liście elementów dodanej do parametrów wywołania zwrotnego.

Element siatki

Reprezentuje element w układzie siatki. Elementy mogą zawierać tekst, obraz lub tekst i obraz.

Zapis JSON
{
  "id": string,
  "image": {
    object (ImageComponent)
  },
  "title": string,
  "subtitle": string,
  "layout": enum (GridItemLayout)
}
Pola
id

string

Identyfikator użytkownika określony przez użytkownika dla tego elementu siatki. Ten identyfikator jest zwracany w parametrach wywołania onClick siatki nadrzędnej.

image

object (ImageComponent)

Obraz wyświetlany w elemencie siatki.

title

string

Tytuł elementu siatki.

subtitle

string

Podtytuł elementu siatki.

layout

enum (GridItemLayout)

Układ, który ma być używany na potrzeby elementu siatki.

Komponent graficzny

Reprezentuje obraz.

Zapis JSON
{
  "imageUri": string,
  "altText": string,
  "cropStyle": {
    object (ImageCropStyle)
  },
  "borderStyle": {
    object (BorderStyle)
  }
}
Pola
imageUri

string

Adres URL obrazu.

altText

string

Etykieta ułatwień dostępu obrazu.

cropStyle

object (ImageCropStyle)

Styl przycinania, który ma zostać zastosowany do obrazu.

borderStyle

object (BorderStyle)

Styl obramowania, który zostanie zastosowany do obrazu.

StylObraza

Odnosi się do stylu przycinania zastosowanego do obrazu.

Aby na przykład zastosować współczynnik proporcji 16:9:

cropStyle {
 "type": "RECTANGLE_CUSTOM",
 "aspectRatio": 16/9
}
Zapis JSON
{
  "type": enum (ImageCropType),
  "aspectRatio": number
}
Pola
type

enum (ImageCropType)

Typ przycięcia.

aspectRatio

number

Współczynnik proporcji używany, jeśli typ przycięcia to RECTANGLE_CUSTOM.

Aby na przykład zastosować współczynnik proporcji 16:9:

cropStyle {
 "type": "RECTANGLE_CUSTOM",
 "aspectRatio": 16/9
}

Typ przycinania obrazu

Odnosi się do stylu przycinania zastosowanego do obrazu.

Wartości w polu enum
IMAGE_CROP_TYPE_UNSPECIFIED Nie określono wartości. Nie używaj.
SQUARE Wartość domyślna. Przytnij obraz kwadratowy.
CIRCLE Zastosowanie przycięcia.
RECTANGLE_CUSTOM Stosuje prostokątne przycięcie do niestandardowego formatu obrazu. Ustaw niestandardowy współczynnik proporcji aspectRatio.
RECTANGLE_4_3 Stosuje prostokątne przycięcie do formatu 4:3.

Styl obramowania

Opcje stylu obramowania karty i widżetu, w tym typ i kolor obramowania.

Zapis JSON
{
  "type": enum (BorderType),
  "strokeColor": {
    object (Color)
  },
  "cornerRadius": integer
}
Pola
type

enum (BorderType)

Typ obramowania.

strokeColor

object (Color)

Kolory używane, gdy typ to BORDER_TYPE_STROKE.

cornerRadius

integer

Promień narożnika obramowania.

Typ obramowania

Odzwierciedla typy obramowania zastosowane do widżetów.

Wartości w polu enum
BORDER_TYPE_UNSPECIFIED Nie określono wartości.
NO_BORDER Wartość domyślna. Bez obramowania.
STROKE Kontur.

Układ siatki

Odzwierciedla różne opcje układu dostępne dla elementu siatki.

Wartości w polu enum
GRID_ITEM_LAYOUT_UNSPECIFIED Nie określono układu.
TEXT_BELOW Tytuł i podtytuł są wyświetlane poniżej obrazu elementu siatki.
TEXT_ABOVE Tytuł i podtytuł są wyświetlane nad obrazem elementu siatki.

Kolumny

Widżet Columns wyświetla maksymalnie 2 kolumny w wiadomości lub oknie dialogowym karty. Do każdej kolumny możesz dodawać widżety – są one wyświetlane w kolejności, w jakiej zostały określone.

Wysokość każdej kolumny zależy od wysokości kolumny. Jeśli na przykład pierwsza kolumna jest wyższa niż druga kolumna, obie są wysokością pierwszej kolumny. Ponieważ każda kolumna może zawierać różną liczbę widżetów, nie można definiować wierszy ani wyrównywać widżetów między kolumnami.

Kolumny są wyświetlane obok siebie. Szerokość każdej kolumny możesz dostosować za pomocą pola HorizontalSizeStyle. Jeśli szerokość ekranu użytkownika jest zbyt wąska, druga kolumna zawija się poniżej pierwszej:

  • W przypadku stron internetowych druga kolumna zawija się, jeśli szerokość ekranu jest mniejsza niż lub równa 480 pikseli.
  • Na urządzeniach z iOS druga kolumna zawija się, jeśli szerokość ekranu jest mniejsza lub równa 300 pkt.
  • Na urządzeniach z Androidem druga kolumna zawija się, jeśli szerokość ekranu jest mniejsza lub równa 320 dp.

Aby uwzględnić więcej niż 2 kolumny lub użyć wierszy, użyj widżetu Grid.

Obsługiwane przez aplikacje do obsługi czatu, ale nie w ramach dodatków do Google Workspace.

Zapis JSON
{
  "columnItems": [
    {
      object (Column)
    }
  ]
}
Pola
columnItems[]

object (Column)

Tablica kolumn. Na karcie lub w oknie dialogowym możesz umieścić maksymalnie 2 kolumny.

Kolumna

Kolumna.

Zapis JSON
{
  "horizontalSizeStyle": enum (HorizontalSizeStyle),
  "horizontalAlignment": enum (HorizontalAlignment),
  "verticalAlignment": enum (VerticalAlignment),
  "widgets": [
    {
      object (Widgets)
    }
  ]
}
Pola
horizontalSizeStyle

enum (HorizontalSizeStyle)

Określa, jak kolumna wypełnia szerokość karty.

horizontalAlignment

enum (HorizontalAlignment)

Określa, czy widżety mają być wyrównane do lewej, prawej czy do środka kolumny.

verticalAlignment

enum (VerticalAlignment)

Określa, czy widżety mają być wyrównane do góry, na dole czy na środku kolumny.

widgets[]

object (Widgets)

Tablica widżetów zawartych w kolumnie. Widżety są wyświetlane w kolejności, w jakiej zostały określone.

Styl HorizontalSizeStyle

Określa, jak kolumna wypełnia szerokość karty. Szerokość każdej kolumny zależy od HorizontalSizeStyle i szerokości widżetów w tej kolumnie.

Wartości w polu enum
HORIZONTAL_SIZE_STYLE_UNSPECIFIED Nie określono. Nie używać.
FILL_AVAILABLE_SPACE Wartość domyślna. Kolumna wypełnia dostępne miejsce (do 70% szerokości karty). Jeśli obie kolumny mają wartość FILL_AVAILABLE_SPACE, każda z nich wypełni 50% miejsca.
FILL_MINIMUM_SPACE Kolumna wypełnia jak najmniejszą ilość miejsca, nie zajmując więcej niż 30% szerokości karty.

Wyrównanie w poziomie

Określa, czy widżety mają być wyrównane do lewej, prawej czy do środka kolumny.

Wartości w polu enum
HORIZONTAL_ALIGNMENT_UNSPECIFIED Nie określono. Nie używać.
START Wartość domyślna. Wyrównuje widżety do pozycji początkowej kolumny. W przypadku układów od lewej do prawej jest wyrównana do lewej. W przypadku układów od prawej do lewej wyrównanie do prawej.
CENTER Wyrównuje widżety do środka kolumny.
END Wyrównuje widżety do pozycji końcowej kolumny. W przypadku układów od lewej do prawej wyrównuje widżety do prawej. W przypadku układów od prawej do lewej wyrównuje widżety do lewej.

Wyrównanie w pionie

Określa, czy widżety mają być wyrównane do góry, na dole czy na środku kolumny.

Wartości w polu enum
VERTICAL_ALIGNMENT_UNSPECIFIED Nie określono. Nie używaj.
CENTER Wartość domyślna. Wyrównuje widżety do środka kolumny.
TOP Wyrównuje widżety do górnej części kolumny.
BOTTOM Wyrównuje widżety do dołu kolumny.

Widżety

Obsługiwane widżety, które można umieścić w kolumnie.

Zapis JSON
{

  // Union field data can be only one of the following:
  "textParagraph": {
    object (TextParagraph)
  },
  "image": {
    object (Image)
  },
  "decoratedText": {
    object (DecoratedText)
  },
  "buttonList": {
    object (ButtonList)
  },
  "textInput": {
    object (TextInput)
  },
  "selectionInput": {
    object (SelectionInput)
  },
  "dateTimePicker": {
    object (DateTimePicker)
  }
  // End of list of possible types for union field data.
}
Pola

Pole sumy: data.

data może być tylko jedną z tych wartości:

textParagraph

object (TextParagraph)

Widżet TextParagraph.

image

object (Image)

Widżet Image.

decoratedText

object (DecoratedText)

Widżet DecoratedText.

buttonList

object (ButtonList)

Widżet ButtonList.

textInput

object (TextInput)

Widżet TextInput.

selectionInput

object (SelectionInput)

Widżet SelectionInput.

dateTimePicker

object (DateTimePicker)

Widżet DateTimePicker.

Działanie CardCard

Działanie karty to działanie powiązane z kartą. Na przykład karta faktury może zawierać informacje o usunięciu faktury, e-mailu lub otwarciu faktury w przeglądarce.

Nieobsługiwane przez aplikacje do obsługi czatu.

Zapis JSON
{
  "actionLabel": string,
  "onClick": {
    object (OnClick)
  }
}
Pola
actionLabel

string

Etykieta wyświetlana jako element menu czynności.

onClick

object (OnClick)

Działanie onClick dotyczące tego działania.

CardFixedStop

Trwała (przyklejona) stopka, która pojawia się u dołu karty.

Ustawienie fixedFooter bez określenia primaryButton lub secondaryButton powoduje błąd.

Obsługiwane przez dodatki do Google Workspace i aplikacje do obsługi czatu. W przypadku aplikacji do obsługi czatu możesz używać stałych stopek w oknach, ale nie w wiadomościach na kartach.

Zapis JSON
{
  "primaryButton": {
    object (Button)
  },
  "secondaryButton": {
    object (Button)
  },
  "widgets": [
    {
      object (FooterWidget)
    }
  ]
}
Pola
primaryButton

object (Button)

Przycisk główny stopki stałej. Musi to być przycisk tekstowy z ustawionym tekstem i kolorem.

secondaryButton

object (Button)

Dodatkowy przycisk stopki stałej. Musi to być przycisk tekstowy z ustawionym tekstem i kolorem. Jeśli jest ustawiona wartość secondaryButton, musisz też ustawić właściwość primaryButton.

widgets[]

object (FooterWidget)

Lista widżetów znajdujących się w stopce karty. Przycisk główny i dodatkowy są renderowane pod tymi widżetami.

Widżet stopki

CardFixedFooter może zawierać listę tych widżetów.

Zapis JSON
{

  // Union field data can be only one of the following:
  "textParagraph": {
    object (TextParagraph)
  },
  "decoratedText": {
    object (DecoratedText)
  },
  "buttonList": {
    object (ButtonList)
  },
  "textInput": {
    object (TextInput)
  },
  "dateTimePicker": {
    object (DateTimePicker)
  }
  // End of list of possible types for union field data.
}
Pola

Pole sumy: data.

data może być tylko jedną z tych wartości:

textParagraph

object (TextParagraph)

Widżet TextParagraph.

decoratedText

object (DecoratedText)

Widżet DecoratedText.

buttonList

object (ButtonList)

Widżet ButtonList.

textInput

object (TextInput)

Widżet TextInput.

dateTimePicker

object (DateTimePicker)

[DateTimePicker][google.apps.card.v1.DateTimePIcker] widżet.

Styl wyświetlania

W dodatkach do Google Workspace określa sposób wyświetlania karty.

Nieobsługiwane przez aplikacje do obsługi czatu.

Wartości w polu enum
DISPLAY_STYLE_UNSPECIFIED Nie używaj.
PEEK Nagłówek karty pojawia się u dołu paska bocznego, częściowo za pomocą bieżącej karty w stosie. Kliknięcie nagłówka spowoduje umieszczenie karty w stosie kart. Jeśli karta nie ma nagłówka, zostanie użyty wygenerowany nagłówek.
REPLACE Wartość domyślna. Karta jest wyświetlana, zastępując widok górnej karty w stosie.