Cards v2

카드

Google Chat 메시지 또는 Google Workspace 부가기능에 표시되는 카드 인터페이스입니다.

카드는 정의된 레이아웃, 버튼과 같은 양방향 UI 요소, 이미지와 같은 리치 미디어를 지원합니다. 카드를 사용하여 자세한 정보를 표시하고, 사용자로부터 정보를 수집하고, 사용자가 다음 단계를 수행하도록 안내합니다.

카드 작성 도구로 카드를 디자인하고 미리보기를 확인합니다.

카드 빌더 열기

카드를 빌드하는 방법을 알아보려면 다음 문서를 참고하세요.

참고: 카드당 위젯을 최대 100개까지 추가할 수 있습니다. 이 한도를 초과하는 위젯은 무시됩니다. 이 제한은 Google Chat 앱의 카드 메시지와 대화상자, Google Workspace 부가기능의 카드 모두에 적용됩니다.

예: Google Chat 앱의 카드 메시지

연락처 카드 예시

Google Chat에서 샘플 카드 메시지를 만들려면 다음 JSON을 사용하세요.

{
  "cardsV2": [
    {
      "cardId": "unique-card-id",
      "card": {
        "header": {
           "title": "Sasha",
           "subtitle": "Software Engineer",
           "imageUrl":
           "https://developers.google.com/workspace/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"
                             }
                           ]
                         }
                       }
                     }
                   ]
                 }
               }
             ]
           }
         ]
       }
    }
  ]
}
JSON 표현
{
  "header": {
    object (CardHeader)
  },
  "sections": [
    {
      object (Section)
    }
  ],
  "sectionDividerStyle": enum (DividerStyle),
  "cardActions": [
    {
      object (CardAction)
    }
  ],
  "name": string,
  "fixedFooter": {
    object (CardFixedFooter)
  },
  "displayStyle": enum (DisplayStyle),
  "peekCardHeader": {
    object (CardHeader)
  }
}
필드
header

object (CardHeader)

카드의 헤더입니다. 헤더에는 일반적으로 선행 이미지와 제목이 포함됩니다. 헤더는 항상 카드 상단에 표시됩니다.

sections[]

object (Section)

위젯 컬렉션을 포함합니다. 각 섹션에는 선택사항인 자체 헤더가 있습니다. 섹션은 선 구분자로 시각적으로 구분됩니다. Google Chat 앱의 예는 카드 섹션 정의를 참고하세요.

sectionDividerStyle

enum (DividerStyle)

머리글, 섹션, 바닥글 사이의 구분자 스타일입니다.

cardActions[]

object (CardAction)

카드의 작업입니다. 작업이 카드의 툴바 메뉴에 추가됩니다.

Google Workspace 부가기능에는 사용할 수 있으며 Google Chat 앱에는 사용할 수 없습니다.

예를 들어 다음 JSON은 SettingsSend 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

카드 이름입니다. 카드 탐색에서 카드 식별자로 사용됩니다.

Google Workspace 부가기능에는 사용할 수 있으며 Google Chat 앱에는 사용할 수 없습니다.

displayStyle

enum (DisplayStyle)

Google Workspace 부가기능에서 peekCardHeader의 표시 속성을 설정합니다.

Google Workspace 부가기능에는 사용할 수 있으며 Google Chat 앱에는 사용할 수 없습니다.

peekCardHeader

object (CardHeader)

탐색 카드 헤더는 사용자가 홈페이지 카드와 문맥 카드 간에 전진할 수 있도록 자리표시자 역할을 합니다.

Google Workspace 부가기능에는 사용할 수 있으며 Google Chat 앱에는 사용할 수 없습니다.

CardHeader

카드 헤더를 나타냅니다. Google Chat 앱의 예는 헤더 추가를 참고하세요.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "title": string,
  "subtitle": string,
  "imageType": enum (ImageType),
  "imageUrl": string,
  "imageAltText": string
}
필드
title

string

필수 항목입니다. 카드 헤더의 제목입니다. 헤더의 높이는 고정되어 있습니다. 제목과 부제목이 모두 지정된 경우 각각 한 줄을 차지합니다. 제목만 지정하면 두 줄을 모두 차지합니다.

subtitle

string

카드 헤더의 부제입니다. 지정된 경우 title 아래의 자체 줄에 표시됩니다.

imageType

enum (ImageType)

이미지를 자르는 데 사용되는 도형입니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

imageUrl

string

카드 헤더의 이미지 HTTPS URL입니다.

imageAltText

string

접근성 목적으로 사용되는 이 이미지의 대체 텍스트입니다.

ImageType

이미지를 자르는 데 사용되는 도형입니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

열거형
SQUARE 기본값 이미지에 정사각형 마스크를 적용합니다. 예를 들어 4x3 이미지는 3x3이 됩니다.
CIRCLE 이미지에 원형 마스크를 적용합니다. 예를 들어 4x3 이미지는 지름이 3인 원이 됩니다.

섹션

섹션에는 지정된 순서대로 세로로 렌더링되는 위젯 모음이 포함됩니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "header": string,
  "widgets": [
    {
      object (Widget)
    }
  ],
  "collapsible": boolean,
  "uncollapsibleWidgetsCount": integer,
  "collapseControl": {
    object (CollapseControl)
  }
}
필드
header

string

섹션 상단에 표시되는 텍스트입니다. 간단한 HTML 형식의 텍스트를 지원합니다. 텍스트 서식 지정에 관한 자세한 내용은 Google Chat 앱에서 텍스트 서식 지정Google Workspace 부가기능에서 텍스트 서식 지정을 참고하세요.

widgets[]

object (Widget)

섹션의 모든 위젯 위젯을 하나 이상 포함해야 합니다.

collapsible

boolean

이 섹션을 접을 수 있는지 여부를 나타냅니다.

접을 수 있는 섹션은 일부 또는 모든 위젯을 숨기지만 사용자는 더보기를 클릭하여 섹션을 펼치고 숨겨진 위젯을 표시할 수 있습니다. 사용자는 표시 줄이기를 클릭하여 위젯을 다시 숨길 수 있습니다.

숨겨진 위젯을 확인하려면 uncollapsibleWidgetsCount를 지정합니다.

uncollapsibleWidgetsCount

integer

섹션이 접혀 있을 때도 계속 표시되는 접을 수 없는 위젯의 수입니다.

예를 들어 섹션에 위젯이 5개 있고 uncollapsibleWidgetsCount2로 설정된 경우 처음 두 개의 위젯은 항상 표시되고 마지막 세 개는 기본적으로 접힙니다. uncollapsibleWidgetsCountcollapsibletrue인 경우에만 고려됩니다.

collapseControl

object (CollapseControl)

선택사항입니다. 섹션의 펼치기 및 접기 버튼을 정의합니다. 이 버튼은 섹션을 접을 수 있는 경우에만 표시됩니다. 이 필드를 설정하지 않으면 기본 버튼이 사용됩니다.

위젯

각 카드는 위젯으로 구성됩니다.

위젯은 텍스트, 이미지, 버튼, 기타 객체 유형 중 하나를 나타낼 수 있는 복합 객체입니다.

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)
  },
  "carousel": {
    object (Carousel)
  },
  "chipList": {
    object (ChipList)
  }
  // End of list of possible types for union field data.
}
필드
horizontalAlignment

enum (HorizontalAlignment)

위젯을 열의 왼쪽, 오른쪽 또는 가운데에 정렬할지 지정합니다.

공용체 필드 data입니다. 위젯에는 다음 항목 중 하나만 포함할 수 있습니다. 여러 위젯 필드를 사용하여 더 많은 항목을 표시할 수 있습니다. data는 다음 중 하나여야 합니다.
textParagraph

object (TextParagraph)

텍스트 단락을 표시합니다. 간단한 HTML 형식의 텍스트를 지원합니다. 텍스트 서식 지정에 관한 자세한 내용은 Google Chat 앱에서 텍스트 서식 지정Google Workspace 부가기능에서 텍스트 서식 지정을 참고하세요.

예를 들어 다음 JSON은 굵은 텍스트를 만듭니다.

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

object (Image)

이미지를 표시합니다.

예를 들어 다음 JSON은 대체 텍스트가 있는 이미지를 만듭니다.

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

object (DecoratedText)

장식된 텍스트 항목을 표시합니다.

예를 들어 다음 JSON은 이메일 주소를 보여주는 장식된 텍스트 위젯을 만듭니다.

"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)

버튼 목록입니다.

예를 들어 다음 JSON은 두 개의 버튼을 만듭니다. 첫 번째는 파란색 텍스트 버튼이고 두 번째는 링크를 여는 이미지 버튼입니다.

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

object (TextInput)

사용자가 입력할 수 있는 텍스트 상자를 표시합니다.

예를 들어 다음 JSON은 이메일 주소의 텍스트 입력을 만듭니다.

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

또 다른 예로 다음 JSON은 정적 추천이 포함된 프로그래밍 언어의 텍스트 입력을 만듭니다.

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

object (SelectionInput)

사용자가 항목을 선택할 수 있는 선택 컨트롤을 표시합니다. 선택 컨트롤은 체크박스, 라디오 버튼, 스위치 또는 드롭다운 메뉴일 수 있습니다.

예를 들어 다음 JSON은 사용자가 크기를 선택할 수 있는 드롭다운 메뉴를 만듭니다.

"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)

사용자가 날짜, 시간 또는 날짜와 시간을 입력할 수 있는 위젯을 표시합니다.

예를 들어 다음 JSON은 약속을 예약할 날짜 시간 선택 도구를 만듭니다.

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

object (Divider)

위젯 사이에 가로선 구분자를 표시합니다.

예를 들어 다음 JSON은 구분자를 만듭니다.

"divider": {
}
grid

object (Grid)

항목 모음이 포함된 그리드를 표시합니다.

그리드는 임의의 수의 열과 항목을 지원합니다. 행 수는 항목 수의 상한값을 열 수로 나눈 값으로 결정됩니다. 항목이 10개이고 열이 2개인 그리드에는 행이 5개 있습니다. 항목이 11개이고 열이 2개인 그리드에는 행이 6개 있습니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

예를 들어 다음 JSON은 단일 항목이 있는 2열 그리드를 만듭니다.

"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)

최대 2개의 열을 표시합니다.

열을 2개 이상 포함하거나 행을 사용하려면 Grid 위젯을 사용하세요.

예를 들어 다음 JSON은 각각 텍스트 단락이 포함된 2개의 열을 만듭니다.

"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"
          }
        }
      ]
    }
  ]
}
carousel

object (Carousel)

캐러셀에는 중첩된 위젯 모음이 포함되어 있습니다. 다음은 텍스트 단락 2개가 포함된 캐러셀의 JSON 표현입니다.

{
  "widgets": [
    {
      "textParagraph": {
        "text": "First text paragraph in the carousel."
      }
    },
    {
      "textParagraph": {
        "text": "Second text paragraph in the carousel."
      }
    }
  ]
}
chipList

object (ChipList)

칩 목록입니다.

예를 들어 다음 JSON은 칩 2개를 만듭니다. 첫 번째는 텍스트 칩이고 두 번째는 링크를 여는 아이콘 칩입니다.

"chipList": {
  "chips": [
    {
      "text": "Edit",
      "disabled": true,
    },
    {
      "icon": {
        "knownIcon": "INVITE",
        "altText": "check calendar"
      },
      "onClick": {
        "openLink": {
          "url": "https://example.com/calendar"
        }
      }
    }
  ]
}

TextParagraph

서식을 지원하는 텍스트 단락입니다. Google Chat 앱의 예는 서식이 지정된 텍스트의 단락 추가를 참고하세요. 텍스트 서식 지정에 관한 자세한 내용은 Google Chat 앱에서 텍스트 서식 지정Google Workspace 부가기능에서 텍스트 서식 지정을 참고하세요.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "text": string,
  "maxLines": integer
}
필드
text

string

위젯에 표시되는 텍스트입니다.

maxLines

integer

위젯에 표시되는 최대 텍스트 줄 수입니다. 텍스트가 지정된 최대 줄 수를 초과하면 초과 콘텐츠가 더보기 버튼 뒤에 숨겨집니다. 텍스트가 지정된 최대 줄 수와 같거나 더 짧으면 더보기 버튼이 표시되지 않습니다.

기본값은 0이며 이 경우 모든 컨텍스트가 표시됩니다. 음수 값은 무시됩니다.

이미지

URL로 지정되고 onClick 작업을 보유할 수 있는 이미지입니다. 예를 보려면 이미지 추가를 참고하세요.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "imageUrl": string,
  "onClick": {
    object (OnClick)
  },
  "altText": string
}
필드
imageUrl

string

이미지를 호스팅하는 HTTPS URL입니다.

예를 들면 다음과 같습니다.

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

object (OnClick)

사용자가 이미지를 클릭하면 클릭이 이 작업을 트리거합니다.

altText

string

접근성 목적으로 사용되는 이 이미지의 대체 텍스트입니다.

OnClick

사용자가 카드에서 버튼과 같은 상호작용 요소를 클릭할 때 응답하는 방법을 나타냅니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{

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

공용체 필드 data입니다.

data는 다음 중 하나여야 합니다.

action

object (Action)

지정하면 이 onClick에 의해 작업이 트리거됩니다.

card

object (Card)

지정된 경우 클릭하면 새 카드가 카드 스택에 푸시됩니다.

Google Workspace 부가기능에는 사용할 수 있으며 Google Chat 앱에는 사용할 수 없습니다.

overflowMenu

object (OverflowMenu)

지정하면 이 onClick 더보기 메뉴가 열립니다.

작업

양식이 제출될 때의 동작을 설명하는 작업입니다. 예를 들어 Apps Script 스크립트를 호출하여 양식을 처리할 수 있습니다. 작업이 트리거되면 양식 값이 서버로 전송됩니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "function": string,
  "parameters": [
    {
      object (ActionParameter)
    }
  ],
  "loadIndicator": enum (LoadIndicator),
  "persistValues": boolean,
  "interaction": enum (Interaction),
  "requiredWidgets": [
    string
  ],
  "allWidgetsAreRequired": boolean
}
필드
function

string

포함된 요소가 클릭되거나 다른 방식으로 활성화될 때 호출할 맞춤 함수입니다.

사용 예는 양식 데이터 읽기를 참고하세요.

parameters[]

object (ActionParameter)

작업 매개변수 목록입니다.

loadIndicator

enum (LoadIndicator)

작업을 호출하는 동안 작업이 표시하는 로드 표시기를 지정합니다.

persistValues

boolean

작업 후 양식 값이 유지되는지 여부를 나타냅니다. 기본값은 false입니다.

true인 경우 작업이 트리거된 후에도 양식 값이 유지됩니다. 작업이 처리되는 동안 사용자가 변경할 수 있도록 하려면 LoadIndicatorNONE로 설정합니다. Chat 앱의 카드 메시지의 경우 작업의 ResponseTypeUPDATE_MESSAGE로 설정하고 작업이 포함된 카드의 동일한 cardId를 사용해야 합니다.

false이면 작업이 트리거될 때 양식 값이 삭제됩니다. 작업이 처리되는 동안 사용자가 변경하지 못하도록 하려면 LoadIndicatorSPINNER로 설정합니다.

interaction

enum (Interaction)

선택사항입니다. 대화상자를 열 때 필요합니다.

사용자가 카드 메시지의 버튼을 클릭하는 등 사용자와의 상호작용에 대한 응답으로 실행할 작업입니다.

지정하지 않으면 앱은 링크 열기나 함수 실행과 같은 action를 실행하여 정상적으로 응답합니다.

interaction를 지정하면 앱이 특별한 대화형 방식으로 응답할 수 있습니다. 예를 들어 interactionOPEN_DIALOG로 설정하면 앱에서 대화상자를 열 수 있습니다. 지정하면 로드 표시기가 표시되지 않습니다. 부가기능에 지정된 경우 전체 카드가 제거되고 클라이언트에 아무것도 표시되지 않습니다.

Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다.

requiredWidgets[]

string

선택사항입니다. 유효한 제출을 위해 이 작업에 필요한 위젯의 이름으로 이 목록을 채웁니다.

이 작업이 호출될 때 여기에 나열된 위젯에 값이 없으면 양식 제출이 중단됩니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

allWidgetsAreRequired

boolean

선택사항입니다. 이 경우 모든 위젯이 이 작업에 필요로 간주됩니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

ActionParameter

작업 메서드가 호출될 때 제공할 문자열 매개변수 목록입니다. 예를 들어 지금 일시중지, 하루 일시중지, 다음 주 일시중지라는 세 가지 일시중지 버튼을 생각해 보세요. 문자열 매개변수 목록에 일시중지 유형과 일시중지 시간을 전달하여 action method = snooze()를 사용할 수 있습니다.

자세한 내용은 CommonEventObject를 참고하세요.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "key": string,
  "value": string
}
필드
key

string

작업 스크립트의 매개변수 이름입니다.

value

string

매개변수의 값입니다.

LoadIndicator

작업을 호출하는 동안 작업이 표시하는 로드 표시기를 지정합니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

열거형
SPINNER 콘텐츠가 로드되고 있음을 나타내는 스피너를 표시합니다.
NONE 아무것도 표시되지 않습니다.

상호작용

선택사항입니다. 대화상자를 열 때 필요합니다.

사용자가 카드 메시지의 버튼을 클릭하는 등 사용자와의 상호작용에 대한 응답으로 실행할 작업입니다.

지정하지 않으면 앱은 링크 열기 또는 함수 실행과 같은 action를 실행하여 정상적으로 응답합니다.

interaction를 지정하면 앱이 특별한 대화형 방식으로 응답할 수 있습니다. 예를 들어 interactionOPEN_DIALOG로 설정하면 앱에서 대화상자를 열 수 있습니다.

지정하면 로드 표시기가 표시되지 않습니다. 부가기능에 지정된 경우 전체 카드가 제거되고 클라이언트에 아무것도 표시되지 않습니다.

Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다.

열거형
INTERACTION_UNSPECIFIED 기본값 action는 정상적으로 실행됩니다.
OPEN_DIALOG

채팅 앱에서 사용자와 상호작용하는 데 사용하는 창 기반 카드 인터페이스인 대화상자를 엽니다.

카드 메시지의 버튼 클릭에 대한 응답으로 Chat 앱에서만 지원됩니다. 부가기능에 지정된 경우 전체 카드가 제거되고 클라이언트에 아무것도 표시되지 않습니다.

Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다.

OpenAs

OnClick 작업이 링크를 열면 클라이언트는 전체 크기 창 (클라이언트에서 사용하는 프레임인 경우) 또는 오버레이 (예: 팝업)로 열 수 있습니다. 구현은 클라이언트 플랫폼 기능에 따라 다르며 클라이언트에서 지원하지 않는 경우 선택한 값이 무시될 수 있습니다. FULL_SIZE는 모든 클라이언트에서 지원됩니다.

Google Workspace 부가기능에는 사용할 수 있으며 Google Chat 앱에는 사용할 수 없습니다.

열거형
FULL_SIZE 링크가 전체 크기 창으로 열립니다 (클라이언트에서 사용하는 프레임이 전체 크기 창인 경우).
OVERLAY 링크가 팝업과 같은 오버레이로 열립니다.

OnClose

OnClick 작업으로 열린 링크가 닫힐 때 클라이언트가 실행하는 작업입니다.

구현은 클라이언트 플랫폼 기능에 따라 다릅니다. 예를 들어 웹브라우저는 OnClose 핸들러가 있는 팝업 창에서 링크를 열 수 있습니다.

OnOpenOnClose 핸들러가 모두 설정되어 있고 클라이언트 플랫폼에서 두 값을 모두 지원할 수 없는 경우 OnClose가 우선 적용됩니다.

Google Workspace 부가기능에는 사용할 수 있으며 Google Chat 앱에는 사용할 수 없습니다.

열거형
NOTHING 기본값 카드가 새로고침되지 않고 아무 일도 일어나지 않습니다.
RELOAD

하위 창이 닫힌 후 카드를 새로고침합니다.

OpenAs.OVERLAY와 함께 사용하면 하위 창이 모달 대화상자로 작동하고 하위 창이 닫힐 때까지 상위 카드가 차단됩니다.

OverflowMenu

사용자가 호출할 수 있는 작업이 하나 이상 포함된 팝업 메뉴를 표시하는 위젯입니다. 예를 들어 카드에 기본이 아닌 작업을 표시하는 경우 작업이 사용 가능한 공간에 맞지 않는 경우 이 위젯을 사용할 수 있습니다. 사용하려면 이를 지원하는 위젯의 OnClick 작업에서 이 위젯을 지정하세요. 예를 들어 Button에서 할 수 있습니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "items": [
    {
      object (OverflowMenuItem)
    }
  ]
}
필드
items[]

object (OverflowMenuItem)

필수 항목입니다. 메뉴 옵션 목록

OverflowMenuItem

사용자가 더보기 메뉴에서 호출할 수 있는 옵션입니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "startIcon": {
    object (Icon)
  },
  "text": string,
  "onClick": {
    object (OnClick)
  },
  "disabled": boolean
}
필드
startIcon

object (Icon)

텍스트 앞에 표시되는 아이콘입니다.

text

string

필수 항목입니다. 사용자에게 상품을 식별하거나 설명하는 텍스트입니다.

onClick

object (OnClick)

필수 항목입니다. 메뉴 옵션이 선택될 때 호출되는 작업입니다. 이 OnClickOverflowMenu를 포함할 수 없으며 지정된 OverflowMenu는 삭제되고 메뉴 항목이 사용 중지됩니다.

disabled

boolean

메뉴 옵션이 사용 중지되었는지 여부입니다. 기본값은 false입니다.

아이콘

카드의 위젯에 표시되는 아이콘 Google Chat 앱의 예는 아이콘 추가를 참고하세요.

기본 제공맞춤 아이콘을 지원합니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

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

  // Union field icons can be only one of the following:
  "knownIcon": string,
  "iconUrl": string,
  "materialIcon": {
    object (MaterialIcon)
  }
  // End of list of possible types for union field icons.
}
필드
altText

string

선택사항입니다. 접근성에 사용되는 아이콘에 대한 설명입니다. 지정하지 않으면 기본값인 Button이 제공됩니다. 아이콘에 표시되는 내용과 해당하는 경우 아이콘의 기능을 설명하는 유용한 설명을 설정하는 것이 좋습니다. 예를 들면 A user's account portrait 또는 Opens a new browser tab and navigates to the Google Chat developer documentation at https://developers.google.com/workspace/chat입니다.

아이콘이 Button에 설정된 경우 사용자가 버튼 위로 마우스를 가져가면 altText가 도우미 텍스트로 표시됩니다. 그러나 버튼에서 text도 설정하면 아이콘의 altText는 무시됩니다.

imageType

enum (ImageType)

이미지에 적용된 자르기 스타일입니다. 경우에 따라 CIRCLE 자르기를 적용하면 이미지가 내장 아이콘보다 더 크게 그려질 수 있습니다.

공용체 필드 icons입니다. 카드의 위젯에 표시되는 아이콘입니다. icons는 다음 중 하나여야 합니다.
knownIcon

string

Google Workspace에서 제공하는 기본 제공 아이콘 중 하나를 표시합니다.

예를 들어 비행기 아이콘을 표시하려면 AIRPLANE를 지정합니다. 버스의 경우 BUS를 지정합니다.

지원되는 아이콘의 전체 목록은 기본 제공 아이콘을 참고하세요.

iconUrl

string

HTTPS URL에 호스팅된 맞춤 아이콘을 표시합니다.

예를 들면 다음과 같습니다.

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

지원되는 파일 형식에는 .png.jpg가 있습니다.

materialIcon

object (MaterialIcon)

Google Material 아이콘 중 하나를 표시합니다.

예를 들어 체크박스 아이콘을 표시하려면 다음을 사용하세요.

"materialIcon": {
  "name": "check_box"
}

Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다.

MaterialIcon

2, 500개가 넘는 옵션이 포함된 Google Material Icon

예를 들어 맞춤설정된 가중치와 등급으로 체크박스 아이콘을 표시하려면 다음을 작성합니다.

{
  "name": "check_box",
  "fill": true,
  "weight": 300,
  "grade": -25
}

Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다.

JSON 표현
{
  "name": string,
  "fill": boolean,
  "weight": integer,
  "grade": integer
}
필드
name

string

Google Material Icon에 정의된 아이콘 이름입니다(예: check_box). 잘못된 이름은 삭제되고 빈 문자열로 대체되며 아이콘이 렌더링되지 않습니다.

fill

boolean

아이콘이 채워진 상태로 렌더링되는지 여부입니다. 기본값은 false입니다.

다양한 아이콘 설정을 미리 보려면 Google 글꼴 아이콘으로 이동하여 맞춤설정에서 설정을 조정합니다.

weight

integer

아이콘의 획 두께입니다. {100, 200, 300, 400, 500, 600, 700} 중에서 선택하세요. 없는 경우 기본값은 400입니다. 다른 값을 지정하면 기본값이 사용됩니다.

다양한 아이콘 설정을 미리 보려면 Google 글꼴 아이콘으로 이동하여 맞춤설정에서 설정을 조정합니다.

grade

integer

두께와 등급은 기호의 두께에 영향을 미칩니다. 등급 조정은 두께 조정보다 세분화되어 있으며 기호 크기에 미치는 영향이 적습니다. {-25, 0, 200} 중에서 선택합니다. 없는 경우 기본값은 0입니다. 다른 값을 지정하면 기본값이 사용됩니다.

다양한 아이콘 설정을 미리 보려면 Google 글꼴 아이콘으로 이동하여 맞춤설정에서 설정을 조정합니다.

DecoratedText

텍스트 위 또는 아래의 라벨, 텍스트 앞의 아이콘, 선택 위젯, 텍스트 뒤의 버튼과 같은 선택적 장식이 있는 텍스트를 표시하는 위젯입니다. Google Chat 앱의 예는 장식 텍스트로 텍스트 표시를 참고하세요.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

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.
}
필드
icon
(deprecated)

object (Icon)

startIcon로 대체되었습니다.

startIcon

object (Icon)

텍스트 앞에 표시되는 아이콘입니다.

topLabel

string

text 위에 표시되는 텍스트입니다. 항상 자릅니다.

text

string

필수 항목입니다. 기본 텍스트입니다.

간단한 서식을 지원합니다. 텍스트 서식 지정에 관한 자세한 내용은 Google Chat 앱에서 텍스트 서식 지정Google Workspace 부가기능에서 텍스트 서식 지정을 참고하세요.

wrapText

boolean

텍스트 줄바꿈 설정입니다. true인 경우 텍스트가 여러 줄로 줄바꿈되어 표시됩니다. 그렇지 않으면 텍스트가 잘립니다.

topLabelbottomLabel이 아닌 text에만 적용됩니다.

bottomLabel

string

text 아래에 표시되는 텍스트입니다. 항상 줄바꿈됩니다.

onClick

object (OnClick)

이 작업은 사용자가 topLabel 또는 bottomLabel를 클릭할 때 트리거됩니다.

공용체 필드 control입니다. decoratedText 위젯의 텍스트 오른쪽에 표시되는 버튼, 스위치, 체크박스 또는 이미지입니다. control는 다음 중 하나여야 합니다.
button

object (Button)

사용자가 클릭하여 작업을 트리거할 수 있는 버튼입니다.

switchControl

object (SwitchControl)

사용자가 클릭하여 상태를 변경하고 작업을 트리거할 수 있는 스위치 위젯입니다.

endIcon

object (Icon)

텍스트 뒤에 표시되는 아이콘입니다.

기본 제공맞춤 아이콘을 지원합니다.

버튼

사용자가 클릭할 수 있는 텍스트, 아이콘 또는 텍스트와 아이콘 버튼 Google Chat 앱의 예는 버튼 추가를 참고하세요.

이미지를 클릭 가능한 버튼으로 만들려면 ImageComponent이 아닌 Image를 지정하고 onClick 작업을 설정합니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "text": string,
  "icon": {
    object (Icon)
  },
  "color": {
    object (Color)
  },
  "onClick": {
    object (OnClick)
  },
  "disabled": boolean,
  "altText": string,
  "type": enum (Type)
}
필드
text

string

버튼 내에 표시되는 텍스트입니다.

icon

object (Icon)

버튼 내에 표시되는 아이콘입니다. icontext가 모두 설정된 경우 아이콘이 텍스트 앞에 표시됩니다.

color

object (Color)

선택사항입니다. 버튼의 색상입니다. 이 속성이 설정되면 버튼 typeFILLED로 설정되고 texticon 필드의 색상이 가독성을 위해 대비되는 색상으로 설정됩니다. 예를 들어 버튼 색상이 파란색으로 설정되면 버튼의 텍스트나 아이콘은 모두 흰색으로 설정됩니다.

버튼 색상을 설정하려면 red, green, blue 필드의 값을 지정합니다. 값은 RGB 색상 값을 기준으로 0과 1 사이의 부동 소수점 수여야 합니다. 여기서 0(0/255)는 색상이 없음을 나타내고 1(255/255)는 색상의 최대 강도를 나타냅니다.

예를 들어 다음은 최대 강도로 색상을 빨간색으로 설정합니다.

"color": {
   "red": 1,
   "green": 0,
   "blue": 0,
}

버튼 색상에는 alpha 필드를 사용할 수 없습니다. 이 필드는 지정하면 무시됩니다.

onClick

object (OnClick)

필수 항목입니다. 사용자가 버튼을 클릭할 때 실행할 작업입니다(예: 하이퍼링크 열기 또는 맞춤 함수 실행).

disabled

boolean

true인 경우 버튼이 비활성 상태로 표시되고 사용자 작업에 응답하지 않습니다.

altText

string

접근성에 사용되는 대체 텍스트입니다.

사용자에게 버튼의 기능을 알리는 설명 텍스트를 설정합니다. 예를 들어 버튼이 하이퍼링크를 여는 경우 '새 브라우저 탭을 열고 https://developers.google.com/workspace/chat"의 Google Chat 개발자 문서로 이동합니다.'라고 작성할 수 있습니다.

type

enum (Type)

선택사항입니다. 버튼 유형입니다. 설정하지 않으면 버튼 유형은 기본적으로 OUTLINED로 설정됩니다. color 필드가 설정되면 버튼 유형이 FILLED로 강제 설정되고 이 필드에 설정된 값은 무시됩니다.

색상

RGBA 색상 공간의 색상을 나타냅니다. 이 표현식은 간결함보다는 다양한 언어의 색상 표현식 간에 간편하게 변환할 수 있도록 설계되었습니다. 예를 들어 이 표현식의 필드는 Java의 java.awt.Color 생성자에 간단히 제공할 수 있습니다. iOS의 UIColor +colorWithRed:green:blue:alpha 메서드에도 간단히 제공할 수 있습니다. 약간의 작업으로 JavaScript에서 CSS rgba() 문자열로 쉽게 형식을 지정할 수 있습니다.

이 참조 페이지에는 RGB 값을 해석하는 데 사용해야 하는 절대 색상 공간(예: sRGB, Adobe RGB, DCI-P3, BT.2020)에 대한 정보가 없습니다. 기본적으로 애플리케이션은 sRGB 색상 공간을 가정해야 합니다.

색상 등식을 결정해야 하는 경우 구현은 달리 문서화되지 않는 한 모든 빨간색, 녹색, 파란색, 알파 값이 각각 최대 1e-5만큼 차이가 있는 경우 두 색상을 동일하게 취급합니다.

예시(자바):

 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();
 }
 // ...

예시(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;
}
// ...

예시(자바스크립트):

// ...

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('');
};

// ...
JSON 표현
{
  "red": number,
  "green": number,
  "blue": number,
  "alpha": number
}
필드
red

number

[0, 1] 간격의 값으로 표시되는 색상의 빨간색 양입니다.

green

number

[0, 1] 간격의 값으로 표시되는 색상의 녹색 양입니다.

blue

number

[0, 1] 간격의 값으로 표시되는 색상의 파란색 양입니다.

alpha

number

픽셀에 적용해야 하는 이 색상의 비율입니다. 즉, 최종 픽셀 색상은 등식으로 정의됩니다.

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

즉, 1.0 값은 단색에 해당하는 반면 0.0 값은 완전히 투명한 색상에 해당합니다. 이 옵션은 단순한 부동 소수점 스칼라 대신 래퍼 메시지를 사용하므로 기본값과 설정되지 않은 값을 구분할 수 있습니다. 생략하면 이 색상 객체는 단색으로 렌더링됩니다 (알파 값이 1.0 값으로 명시적으로 지정된 경우).

유형

선택사항입니다. 버튼의 유형입니다. color 필드가 설정되면 typeFILLED로 강제됩니다.

Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다.

열거형
TYPE_UNSPECIFIED 사용하지 마세요. 지정되지 않았습니다.
OUTLINED 윤곽선이 있는 버튼은 중간 강조 버튼입니다. 여기에는 일반적으로 중요하지만 Chat 앱 또는 부가기능의 기본 작업이 아닌 작업이 포함됩니다.
FILLED 채워진 버튼에는 단색 컨테이너가 있습니다. 시각적 효과가 가장 강하며 Chat 앱 또는 부가기능에서 중요한 기본 작업에 사용하는 것이 좋습니다.
FILLED_TONAL 채워진 색조 버튼은 채워진 버튼과 윤곽선이 있는 버튼의 중간 정도에 해당합니다. 우선순위가 낮은 버튼에 윤곽선 버튼보다 약간 더 강조가 필요한 컨텍스트에서 유용합니다.
BORDERLESS 버튼의 기본 상태에는 보이지 않는 컨테이너가 없습니다. 특히 여러 옵션을 표시할 때 가장 낮은 우선순위 작업에 자주 사용됩니다.

SwitchControl

decoratedText 위젯 내의 전환식 스위치 또는 체크박스입니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

decoratedText 위젯에서만 지원됩니다.

JSON 표현
{
  "name": string,
  "value": string,
  "selected": boolean,
  "onChangeAction": {
    object (Action)
  },
  "controlType": enum (ControlType)
}
필드
name

string

양식 입력 이벤트에서 스위치 위젯을 식별하는 이름입니다.

양식 입력 작업에 관한 자세한 내용은 양식 데이터 수신을 참고하세요.

value

string

사용자가 입력한 값으로, 양식 입력 이벤트의 일부로 반환됩니다.

양식 입력 작업에 관한 자세한 내용은 양식 데이터 수신을 참고하세요.

selected

boolean

true이면 스위치가 선택된 것입니다.

onChangeAction

object (Action)

스위치 상태가 변경될 때 실행할 작업(예: 실행할 함수)입니다.

controlType

enum (ControlType)

스위치가 사용자 인터페이스에 표시되는 방식

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

ControlType

스위치가 사용자 인터페이스에 표시되는 방식

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

열거형
SWITCH 전환식 스위치입니다.
CHECKBOX CHECK_BOX로 대체되었습니다.
CHECK_BOX 체크박스입니다.

ButtonList

가로로 배치된 버튼 목록 Google Chat 앱의 예는 버튼 추가를 참고하세요.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "buttons": [
    {
      object (Button)
    }
  ]
}
필드
buttons[]

object (Button)

버튼 배열

TextInput

사용자가 텍스트를 입력할 수 있는 필드입니다. 추천 및 변경 시 작업을 지원합니다. 양식 제출 유효성 검사를 지원합니다. Action.all_widgets_are_requiredtrue로 설정되거나 이 위젯이 Action.required_widgets에 지정된 경우 값을 입력하지 않으면 제출 작업이 차단됩니다. Google Chat 앱의 예는 사용자가 텍스트를 입력할 수 있는 입력란 추가를 참고하세요.

채팅 앱은 양식 입력 이벤트 중에 입력된 텍스트의 값을 수신하고 처리할 수 있습니다. 양식 입력 작업에 관한 자세한 내용은 양식 데이터 수신을 참고하세요.

사용자로부터 정의되지 않거나 추상적인 데이터를 수집해야 하는 경우 텍스트 입력을 사용하세요. 사용자로부터 정의된 데이터 또는 열거형 데이터를 수집하려면 SelectionInput 위젯을 사용하세요.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "name": string,
  "label": string,
  "hintText": string,
  "value": string,
  "type": enum (Type),
  "onChangeAction": {
    object (Action)
  },
  "initialSuggestions": {
    object (Suggestions)
  },
  "autoCompleteAction": {
    object (Action)
  },
  "validation": {
    object (Validation)
  },
  "placeholderText": string
}
필드
name

string

양식 입력 이벤트에서 텍스트 입력을 식별하는 이름입니다.

양식 입력 작업에 관한 자세한 내용은 양식 데이터 수신을 참고하세요.

label

string

사용자 인터페이스의 텍스트 입력란 위에 표시되는 텍스트입니다.

사용자가 앱에 필요한 정보를 입력하는 데 도움이 되는 텍스트를 지정합니다. 예를 들어 사용자의 이름을 묻는데 특히 성만 필요한 경우 name 대신 surname를 입력합니다.

hintText이 지정되지 않은 경우 필수입니다. 그 외의 경우에는 선택사항입니다.

hintText

string

텍스트 입력란 아래에 표시되는 텍스트로, 사용자에게 특정 값을 입력하라는 메시지를 표시하여 도움을 줍니다. 이 텍스트는 항상 표시됩니다.

label이 지정되지 않은 경우 필수입니다. 그 외의 경우에는 선택사항입니다.

value

string

사용자가 입력한 값으로, 양식 입력 이벤트의 일부로 반환됩니다.

양식 입력 작업에 관한 자세한 내용은 양식 데이터 수신을 참고하세요.

type

enum (Type)

텍스트 입력란이 사용자 인터페이스에 표시되는 방식입니다. 예를 들어 필드가 단일 행인지 여러 행인지 여부입니다.

onChangeAction

object (Action)

텍스트 입력란에 변경사항이 발생할 때 취해야 할 조치입니다. 예를 들어 사용자가 입력란에 추가하거나 텍스트를 삭제하는 경우입니다.

취할 수 있는 작업의 예로는 맞춤 함수를 실행하거나 Google Chat에서 대화상자를 여는 것이 있습니다.

initialSuggestions

object (Suggestions)

사용자가 입력할 수 있는 추천 값입니다. 이 값은 사용자가 텍스트 입력란을 클릭할 때 표시됩니다. 사용자가 입력하면 추천 값이 사용자가 입력한 내용과 일치하도록 동적으로 필터링됩니다.

예를 들어 프로그래밍 언어의 텍스트 입력란에 Java, JavaScript, Python, C++가 추천될 수 있습니다. 사용자가 Jav를 입력하면 추천 목록이 필터링되어 JavaJavaScript만 표시됩니다.

추천 값은 사용자가 앱에서 이해할 수 있는 값을 입력하도록 안내하는 데 도움이 됩니다. JavaScript를 언급할 때 일부 사용자는 javascript를 입력하고 다른 사용자는 java script를 입력할 수 있습니다. JavaScript를 제안하면 사용자가 앱과 상호작용하는 방식을 표준화할 수 있습니다.

지정된 경우 TextInput.typeMULTIPLE_LINE로 설정되더라도 항상 SINGLE_LINE입니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

autoCompleteAction

object (Action)

선택사항입니다. 텍스트 입력란이 상호작용하는 사용자에게 추천을 제공할 때 취할 작업을 지정합니다.

지정하지 않으면 추천은 initialSuggestions에 의해 설정되고 클라이언트에서 처리됩니다.

지정된 경우 앱은 맞춤 함수 실행과 같이 여기에 지정된 작업을 실행합니다.

Google Workspace 부가기능에는 사용할 수 있으며 Google Chat 앱에는 사용할 수 없습니다.

validation

object (Validation)

이 텍스트 필드에 필요한 입력 형식 유효성 검사를 지정합니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

placeholderText

string

필드가 비어 있을 때 텍스트 입력란에 표시되는 텍스트입니다. 이 텍스트를 사용하여 사용자에게 값을 입력하라는 메시지를 표시합니다. 예: Enter a number from 0 to 100.

Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다.

유형

텍스트 입력란이 사용자 인터페이스에 표시되는 방식입니다. 예를 들어 단일 줄 입력란인지 또는 여러 줄 입력인지 여부입니다. initialSuggestions이 지정된 경우 typeMULTIPLE_LINE로 설정되더라도 항상 SINGLE_LINE입니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

열거형
SINGLE_LINE 텍스트 입력란의 높이는 1줄로 고정되어 있습니다.
MULTIPLE_LINE 텍스트 입력란의 높이는 여러 줄로 고정되어 있습니다.

RenderActions

카드에 작업을 실행하도록 지시하거나 부가기능 호스트 앱 또는 Chat 앱에 앱별 작업을 실행하도록 지시하는 렌더링 안내 세트입니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

필드
action

Action

작업

필드
navigations[]

Navigation

카드를 푸시, 팝 또는 업데이트합니다.

개발자 프리뷰: Google Chat의 부가기능

비슷한 사진에 새 카드를 추가합니다 (앞으로 탐색). Chat 앱의 경우 앱 홈에서만 사용할 수 있습니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

navigations: {
  pushCard: CARD
}

맨 위 카드를 새 카드로 교체합니다. Chat 앱의 경우 앱 홈에서만 사용할 수 있습니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

navigations: {
  updateCard: CARD
}

추천

사용자가 입력할 수 있는 추천 값입니다. 이 값은 사용자가 텍스트 입력란을 클릭할 때 표시됩니다. 사용자가 입력하면 추천 값이 사용자가 입력한 내용과 일치하도록 동적으로 필터링됩니다.

예를 들어 프로그래밍 언어의 텍스트 입력란에는 Java, JavaScript, Python, C++가 추천될 수 있습니다. 사용자가 Jav를 입력하면 추천 목록이 필터링되어 JavaJavaScript가 표시됩니다.

추천 값은 사용자가 앱에서 이해할 수 있는 값을 입력하도록 안내하는 데 도움이 됩니다. JavaScript를 언급할 때 일부 사용자는 javascript를 입력하고 다른 사용자는 java script를 입력할 수 있습니다. JavaScript를 제안하면 사용자가 앱과 상호작용하는 방식을 표준화할 수 있습니다.

지정된 경우 TextInput.typeMULTIPLE_LINE로 설정되더라도 항상 SINGLE_LINE입니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "items": [
    {
      object (SuggestionItem)
    }
  ]
}
필드
items[]

object (SuggestionItem)

텍스트 입력란의 자동 완성 추천에 사용되는 추천 목록입니다.

SuggestionItem

사용자가 텍스트 입력란에 입력할 수 있는 추천 값 1개

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{

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

공용체 필드 content입니다.

content는 다음 중 하나여야 합니다.

text

string

텍스트 입력란에 추천된 입력의 값입니다. 이는 사용자가 직접 입력한 내용과 같습니다.

유효성 검사

연결된 위젯의 유효성을 검사하는 데 필요한 데이터를 나타냅니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "characterLimit": integer,
  "inputType": enum (InputType)
}
필드
characterLimit

integer

텍스트 입력 위젯의 글자 수 제한을 지정합니다. 이 속성은 텍스트 입력에만 사용되며 다른 위젯에서는 무시됩니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

inputType

enum (InputType)

입력 위젯의 유형을 지정합니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

InputType

입력 위젯의 유형입니다.

열거형
INPUT_TYPE_UNSPECIFIED 알 수 없는 유형. 사용하지 마세요.
TEXT 모든 문자를 허용하는 일반 텍스트입니다.
INTEGER 정수 값입니다.
FLOAT 부동 소수점 값
EMAIL 이메일 주소.
EMOJI_PICKER 시스템 제공 그림 이모티콘 선택 도구에서 선택한 그림 이모티콘입니다.

SelectionInput

사용자가 선택할 수 있는 하나 이상의 UI 항목을 만드는 위젯입니다. dropdownmultiselect 메뉴에 대해서만 양식 제출 유효성 검사를 지원합니다. Action.all_widgets_are_requiredtrue로 설정되거나 이 위젯이 Action.required_widgets에 지정된 경우 값이 선택되지 않으면 제출 작업이 차단됩니다. 예를 들어 드롭다운 메뉴나 체크박스가 있습니다. 이 위젯을 사용하여 예측하거나 열거할 수 있는 데이터를 수집할 수 있습니다. Google Chat 앱의 예는 선택 가능한 UI 요소 추가를 참고하세요.

Chat 앱은 사용자가 선택하거나 입력한 항목의 값을 처리할 수 있습니다. 양식 입력 작업에 관한 자세한 내용은 양식 데이터 수신을 참고하세요.

사용자로부터 정의되지 않거나 추상적인 데이터를 수집하려면 TextInput 위젯을 사용하세요.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "name": string,
  "label": string,
  "type": enum (SelectionType),
  "items": [
    {
      object (SelectionItem)
    }
  ],
  "onChangeAction": {
    object (Action)
  },
  "multiSelectMaxSelectedItems": integer,
  "multiSelectMinQueryLength": integer,

  // Union field multi_select_data_source can be only one of the following:
  "externalDataSource": {
    object (Action)
  },
  "platformDataSource": {
    object (PlatformDataSource)
  }
  // End of list of possible types for union field multi_select_data_source.
}
필드
name

string

필수 항목입니다. 양식 입력 이벤트에서 선택 입력을 식별하는 이름입니다.

양식 입력 작업에 관한 자세한 내용은 양식 데이터 수신을 참고하세요.

label

string

사용자 인터페이스의 선택 입력란 위에 표시되는 텍스트입니다.

사용자가 앱에 필요한 정보를 입력하는 데 도움이 되는 텍스트를 지정합니다. 예를 들어 사용자가 드롭다운 메뉴에서 작업 티켓의 긴급도를 선택하는 경우 라벨은 '긴급도' 또는 '긴급도 선택'일 수 있습니다.

type

enum (SelectionType)

SelectionInput 위젯에서 사용자에게 표시되는 항목 유형입니다. 선택 유형은 다양한 유형의 상호작용을 지원합니다. 예를 들어 체크박스는 하나 이상 선택할 수 있지만 드롭다운 메뉴에서는 값을 하나만 선택할 수 있습니다.

items[]

object (SelectionItem)

선택 가능한 항목의 배열입니다. 예를 들어 라디오 버튼 또는 체크박스의 배열이 있습니다. 최대 100개의 항목을 지원합니다.

onChangeAction

object (Action)

지정된 경우 선택사항이 변경될 때 양식이 제출됩니다. 지정하지 않으면 양식을 제출하는 별도의 버튼을 지정해야 합니다.

양식 입력 작업에 관한 자세한 내용은 양식 데이터 수신을 참고하세요.

multiSelectMaxSelectedItems

integer

다중 선택 메뉴의 경우 사용자가 선택할 수 있는 최대 항목 수입니다. 최솟값은 항목 1개입니다. 지정하지 않으면 기본값은 항목 3개입니다.

multiSelectMinQueryLength

integer

멀티셀렉션 메뉴의 경우 메뉴가 추천 선택 항목을 반환하기 전에 사용자가 입력하는 텍스트 문자 수입니다.

설정하지 않으면 멀티셀렉션 메뉴에서 다음 기본값을 사용합니다.

  • 메뉴가 SelectionInput 항목의 정적 배열을 사용하는 경우 기본값은 0자이고 배열의 항목을 즉시 채웁니다.
  • 메뉴에서 동적 데이터 소스(multi_select_data_source)를 사용하는 경우 데이터 소스를 쿼리하여 추천 항목을 반환하기 전에 기본적으로 3자로 설정됩니다.

공용체 필드 multi_select_data_source입니다. 다중 선택 메뉴의 경우 선택 항목을 동적으로 채우는 데이터 소스입니다.

Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다. multi_select_data_source는 다음 중 하나여야 합니다.

externalDataSource

object (Action)

관계형 데이터베이스와 같은 외부 데이터 소스

platformDataSource

object (PlatformDataSource)

Google Workspace의 데이터 소스입니다.

SelectionType

사용자가 선택할 수 있는 항목의 형식입니다. 옵션에 따라 서로 다른 유형의 상호작용이 지원됩니다. 예를 들어 사용자는 체크박스를 여러 개 선택할 수 있지만 드롭다운 메뉴에서는 항목을 하나만 선택할 수 있습니다.

각 선택 입력은 하나의 선택 유형을 지원합니다. 예를 들어 체크박스와 스위치를 혼합하는 것은 지원되지 않습니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

열거형
CHECK_BOX 체크박스 집합 사용자는 체크박스를 하나 이상 선택할 수 있습니다.
RADIO_BUTTON 라디오 버튼 집합입니다. 사용자는 라디오 버튼을 하나 선택할 수 있습니다.
SWITCH 스위치 집합입니다. 사용자가 스위치를 하나 이상 켤 수 있습니다.
DROPDOWN 드롭다운 메뉴 사용자는 메뉴에서 항목을 하나 선택할 수 있습니다.
MULTI_SELECT

텍스트 상자가 있는 메뉴 사용자는 하나 이상의 항목을 입력하고 선택할 수 있습니다. Google Workspace 부가기능의 경우 SelectionItem 객체의 정적 배열을 사용하여 항목을 채워야 합니다.

Google Chat 앱의 경우 동적 데이터 소스를 사용하여 항목을 채우고 사용자가 메뉴에 입력할 때 항목을 자동 추천할 수도 있습니다. 예를 들어 사용자가 Google Chat 스페이스의 이름을 입력하기 시작하면 위젯에서 스페이스를 자동 추천합니다. 멀티셀렉션 메뉴의 항목을 동적으로 채우려면 다음 유형의 데이터 소스 중 하나를 사용하세요.

  • Google Workspace 데이터: Google Workspace 사용자 또는 Google Chat 스페이스와 같은 Google Workspace의 데이터를 사용하여 항목이 채워집니다.
  • 외부 데이터: Google Workspace 외부의 외부 데이터 소스에서 항목이 채워집니다.

Chat 앱에 멀티셀렉션 메뉴를 구현하는 방법의 예는 멀티셀렉션 메뉴 추가를 참고하세요.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

SelectionItem

사용자가 선택 입력에서 선택할 수 있는 항목(예: 체크박스 또는 스위치) 최대 100개의 항목을 지원합니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "text": string,
  "value": string,
  "selected": boolean,
  "startIconUri": string,
  "bottomText": string
}
필드
text

string

사용자에게 상품을 식별하거나 설명하는 텍스트입니다.

value

string

이 항목과 연결된 값입니다. 클라이언트는 이를 양식 입력 값으로 사용해야 합니다.

양식 입력 작업에 관한 자세한 내용은 양식 데이터 수신을 참고하세요.

selected

boolean

기본적으로 항목이 선택되어 있는지 여부입니다. 선택 입력란에서 하나의 값만 허용하는 경우 (예: 라디오 버튼 또는 드롭다운 메뉴) 항목 하나에 대해서만 이 필드를 설정합니다.

startIconUri

string

다중 선택 메뉴의 경우 항목의 text 필드 옆에 표시된 아이콘의 URL입니다. PNG 및 JPEG 파일을 지원합니다. HTTPS URL이어야 합니다. 예를 들면 https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png입니다.

bottomText

string

멀티셀렉션 메뉴의 경우 항목의 text 필드 아래에 표시되는 텍스트 설명 또는 라벨입니다.

PlatformDataSource

멀티셀렉션 메뉴를 사용하는 SelectionInput 위젯의 경우 Google Workspace의 데이터 소스입니다. 멀티셀렉션 메뉴의 항목을 채우는 데 사용됩니다.

Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다.

JSON 표현
{

  // Union field data_source can be only one of the following:
  "commonDataSource": enum (CommonDataSource),
  "hostAppDataSource": {
    object (HostAppDataSourceMarkup)
  }
  // End of list of possible types for union field data_source.
}
필드
공용체 필드 data_source입니다. 데이터 소스 data_source는 다음 중 하나여야 합니다.
commonDataSource

enum (CommonDataSource)

Google Workspace 조직의 사용자와 같이 모든 Google Workspace 애플리케이션에서 공유하는 데이터 소스입니다.

hostAppDataSource

object (HostAppDataSourceMarkup)

Google Chat의 스페이스와 같이 Google Workspace 호스트 애플리케이션에 고유한 데이터 소스입니다.

이 필드는 Google API 클라이언트 라이브러리를 지원하지만 Cloud 클라이언트 라이브러리에서는 사용할 수 없습니다. 자세한 내용은 클라이언트 라이브러리 설치를 참고하세요.

CommonDataSource

모든 Google Workspace 애플리케이션에서 공유하는 데이터 소스입니다.

Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다.

열거형
UNKNOWN 기본값 사용하지 마세요.
USER Google Workspace 사용자 사용자는 Google Workspace 조직의 사용자만 보고 선택할 수 있습니다.

HostAppDataSourceMarkup

멀티셀렉션 메뉴를 사용하는 SelectionInput 위젯의 경우 Google Workspace 애플리케이션의 데이터 소스입니다. 데이터 소스는 다중 선택 메뉴의 선택 항목을 채웁니다.

Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다.

JSON 표현
{

  // Union field data_source can be only one of the following:
  "chatDataSource": {
    object (ChatClientDataSourceMarkup)
  }
  // End of list of possible types for union field data_source.
}
필드
공용체 필드 data_source입니다. 다중 선택 메뉴의 항목을 채우는 Google Workspace 애플리케이션입니다. data_source는 다음 중 하나여야 합니다.
chatDataSource

object (ChatClientDataSourceMarkup)

Google Chat의 데이터 소스입니다.

ChatClientDataSourceMarkup

멀티셀렉션 메뉴를 사용하는 SelectionInput 위젯의 경우 Google Chat의 데이터 소스입니다. 데이터 소스는 다중 선택 메뉴의 선택 항목을 채웁니다. 예를 들어 사용자가 자신이 참여 중인 Google Chat 스페이스를 선택할 수 있습니다.

Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다.

JSON 표현
{

  // Union field source can be only one of the following:
  "spaceDataSource": {
    object (SpaceDataSource)
  }
  // End of list of possible types for union field source.
}
필드
공용체 필드 source입니다. Google Chat 데이터 소스 source는 다음 중 하나여야 합니다.
spaceDataSource

object (SpaceDataSource)

사용자가 참여 중인 Google Chat 스페이스입니다.

SpaceDataSource

Google Chat 스페이스를 다중 선택 메뉴의 선택 항목으로 채우는 데이터 소스입니다. 사용자가 구성원으로 있는 스페이스만 채웁니다.

Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다.

JSON 표현
{
  "defaultToCurrentSpace": boolean
}
필드
defaultToCurrentSpace

boolean

true로 설정하면 다중 선택 메뉴에서 기본적으로 현재 Google Chat 스페이스를 항목으로 선택합니다.

DateTimePicker

사용자가 날짜, 시간 또는 날짜와 시간을 모두 입력할 수 있습니다. 양식 제출 유효성 검사를 지원합니다. Action.all_widgets_are_requiredtrue로 설정되거나 이 위젯이 Action.required_widgets에 지정된 경우 값이 선택되지 않으면 제출 작업이 차단됩니다. Google Chat 앱의 예는 사용자가 날짜와 시간을 선택하도록 허용하기를 참고하세요.

사용자는 텍스트를 입력하거나 선택 도구를 사용하여 날짜와 시간을 선택할 수 있습니다. 사용자가 잘못된 날짜 또는 시간을 입력하면 선택 도구에 정보를 올바르게 입력하라는 오류 메시지가 표시됩니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "name": string,
  "label": string,
  "type": enum (DateTimePickerType),
  "valueMsEpoch": string,
  "timezoneOffsetDate": integer,
  "onChangeAction": {
    object (Action)
  }
}
필드
name

string

양식 입력 이벤트에서 DateTimePicker를 식별하는 이름입니다.

양식 입력 작업에 관한 자세한 내용은 양식 데이터 수신을 참고하세요.

label

string

사용자에게 날짜, 시간 또는 날짜와 시간을 입력하라는 메시지를 표시하는 텍스트입니다. 예를 들어 사용자가 약속을 예약하는 경우 Appointment date 또는 Appointment date and time와 같은 라벨을 사용합니다.

type

enum (DateTimePickerType)

위젯에서 날짜, 시간 또는 날짜와 시간을 입력할 수 있는지 여부입니다.

valueMsEpoch

string (int64 format)

Unix epoch 이후 밀리초 단위로 위젯에 표시되는 기본값입니다.

선택 도구 유형(DateTimePickerType)에 따라 값을 지정합니다.

  • DATE_AND_TIME : UTC의 캘린더 날짜 및 시간입니다. 예를 들어 2023년 1월 1일 오후 12시(UTC)를 나타내려면 1672574400000를 사용합니다.
  • DATE_ONLY : 00:00:00 UTC의 캘린더 날짜입니다. 예를 들어 2023년 1월 1일을 나타내려면 1672531200000을 사용합니다.
  • TIME_ONLY : UTC 시간입니다. 예를 들어 오후 12시를 나타내려면 43200000(또는 12 * 60 * 60 * 1000)를 사용합니다.
timezoneOffsetDate

integer

UTC와의 시간대 오프셋을 나타내는 숫자(분)입니다. 설정하면 지정된 시간대에 valueMsEpoch이 표시됩니다. 설정하지 않으면 값이 사용자의 시간대 설정으로 기본 설정됩니다.

onChangeAction

object (Action)

사용자가 DateTimePicker 인터페이스에서 저장 또는 지우기를 클릭할 때 트리거됩니다.

DateTimePickerType

DateTimePicker 위젯의 날짜 및 시간 형식입니다. 사용자가 날짜, 시간 또는 날짜와 시간을 모두 입력할 수 있는지 결정합니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

열거형
DATE_AND_TIME 사용자가 날짜와 시간을 입력합니다.
DATE_ONLY 사용자가 날짜를 입력합니다.
TIME_ONLY 사용자가 시간을 입력합니다.

구분선

이 유형에는 필드가 없습니다.

위젯 간의 구분선을 가로선으로 표시합니다. Google Chat 앱의 예는 위젯 사이에 가로 구분자 추가를 참고하세요.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

예를 들어 다음 JSON은 구분자를 만듭니다.

"divider": {}

그리드

항목 모음이 포함된 그리드를 표시합니다. 항목에는 텍스트 또는 이미지만 포함할 수 있습니다. 반응형 열의 경우 또는 텍스트나 이미지 외의 항목을 포함하려면 Columns를 사용하세요. Google Chat 앱의 예는 항목 모음으로 그리드 표시를 참고하세요.

그리드는 임의의 수의 열과 항목을 지원합니다. 행 수는 항목을 열로 나눈 값으로 결정됩니다. 항목이 10개이고 열이 2개인 그리드에는 행이 5개 있습니다. 항목이 11개이고 열이 2개인 그리드에는 행이 6개 있습니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

예를 들어 다음 JSON은 단일 항목이 있는 2열 그리드를 만듭니다.

"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"
    }
  }
}
JSON 표현
{
  "title": string,
  "items": [
    {
      object (GridItem)
    }
  ],
  "borderStyle": {
    object (BorderStyle)
  },
  "columnCount": integer,
  "onClick": {
    object (OnClick)
  }
}
필드
title

string

그리드 헤더에 표시되는 텍스트입니다.

items[]

object (GridItem)

그리드에 표시할 항목입니다.

borderStyle

object (BorderStyle)

각 그리드 항목에 적용할 테두리 스타일입니다.

columnCount

integer

그리드에 표시할 열 수입니다. 이 필드가 지정되지 않은 경우 기본값이 사용되며 이 기본값은 그리드가 표시되는 위치 (대화상자 또는 호환 앱)에 따라 다릅니다.

onClick

object (OnClick)

이 콜백은 각 개별 그리드 항목에서 재사용되지만 항목 목록의 항목 식별자와 색인이 콜백의 매개변수에 추가됩니다.

GridItem

그리드 레이아웃의 항목을 나타냅니다. 항목에는 텍스트, 이미지 또는 텍스트와 이미지가 모두 포함될 수 있습니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "id": string,
  "image": {
    object (ImageComponent)
  },
  "title": string,
  "subtitle": string,
  "layout": enum (GridItemLayout)
}
필드
id

string

이 그리드 항목에 대해 사용자가 지정한 식별자입니다. 이 식별자는 상위 그리드의 onClick 콜백 매개변수로 반환됩니다.

image

object (ImageComponent)

그리드 항목에 표시되는 이미지입니다.

title

string

그리드 항목의 제목입니다.

subtitle

string

그리드 항목의 부제목입니다.

layout

enum (GridItemLayout)

그리드 항목에 사용할 레이아웃입니다.

ImageComponent

이미지를 나타냅니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "imageUri": string,
  "altText": string,
  "cropStyle": {
    object (ImageCropStyle)
  },
  "borderStyle": {
    object (BorderStyle)
  }
}
필드
imageUri

string

이미지 URL입니다.

altText

string

이미지의 접근성 라벨입니다.

cropStyle

object (ImageCropStyle)

이미지에 적용할 자르기 스타일입니다.

borderStyle

object (BorderStyle)

이미지에 적용할 테두리 스타일입니다.

ImageCropStyle

이미지에 적용된 자르기 스타일을 나타냅니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

예를 들어 16:9 가로세로 비율을 적용하는 방법은 다음과 같습니다.

cropStyle {
 "type": "RECTANGLE_CUSTOM",
 "aspectRatio": 16/9
}
JSON 표현
{
  "type": enum (ImageCropType),
  "aspectRatio": number
}
필드
type

enum (ImageCropType)

자르기 유형입니다.

aspectRatio

number

자르기 유형이 RECTANGLE_CUSTOM인 경우 사용할 가로세로 비율입니다.

예를 들어 16:9 가로세로 비율을 적용하는 방법은 다음과 같습니다.

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

ImageCropType

이미지에 적용된 자르기 스타일을 나타냅니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

열거형
IMAGE_CROP_TYPE_UNSPECIFIED 사용하지 마세요. 지정되지 않았습니다.
SQUARE 기본값 정사각형 자르기를 적용합니다.
CIRCLE 원형 자르기를 적용합니다.
RECTANGLE_CUSTOM 맞춤 가로세로 비율로 직사각형 자르기를 적용합니다. aspectRatio를 사용하여 맞춤 가로세로 비율을 설정합니다.
RECTANGLE_4_3 4:3 가로세로 비율로 직사각형 자르기를 적용합니다.

BorderStyle

테두리 유형 및 색상을 포함하여 카드 또는 위젯의 테두리에 대한 스타일 옵션입니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "type": enum (BorderType),
  "strokeColor": {
    object (Color)
  },
  "cornerRadius": integer
}
필드
type

enum (BorderType)

테두리 유형입니다.

strokeColor

object (Color)

유형이 BORDER_TYPE_STROKE인 경우 사용할 색상입니다.

획 색상을 설정하려면 red, green, blue 필드의 값을 지정합니다. 값은 RGB 색상 값을 기준으로 0과 1 사이의 부동 소수점 수여야 합니다. 여기서 0(0/255)는 색상이 없음을 나타내고 1(255/255)는 색상의 최대 강도를 나타냅니다.

예를 들어 다음은 최대 강도로 색상을 빨간색으로 설정합니다.

"color": {
   "red": 1,
   "green": 0,
   "blue": 0,
}

획 색상에는 alpha 필드를 사용할 수 없습니다. 이 필드는 지정하면 무시됩니다.

cornerRadius

integer

테두리의 모서리 반경입니다.

BorderType

위젯에 적용된 테두리 유형을 나타냅니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

열거형
BORDER_TYPE_UNSPECIFIED 사용하지 마세요. 지정되지 않았습니다.
NO_BORDER 기본값 테두리가 없습니다.
STROKE 개요

GridItemLayout

그리드 항목에 사용할 수 있는 다양한 레이아웃 옵션을 나타냅니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

열거형
GRID_ITEM_LAYOUT_UNSPECIFIED 사용하지 마세요. 지정되지 않았습니다.
TEXT_BELOW 제목과 부제목은 그리드 항목의 이미지 아래에 표시됩니다.
TEXT_ABOVE 제목과 부제목은 그리드 항목의 이미지 위에 표시됩니다.

Columns 위젯은 카드 또는 대화상자에 최대 2개의 열을 표시합니다. 각 열에 위젯을 추가할 수 있으며 위젯은 지정된 순서대로 표시됩니다. Google Chat 앱의 예는 열에 카드 및 대화상자 표시를 참고하세요.

각 열의 높이는 더 높은 열에 따라 결정됩니다. 예를 들어 첫 번째 열이 두 번째 열보다 높으면 두 열 모두 첫 번째 열의 높이를 갖습니다. 각 열에 포함할 위젯의 수가 다를 수 있으므로 행을 정의하거나 열 간에 위젯을 정렬할 수 없습니다.

열이 나란히 표시됩니다. HorizontalSizeStyle 필드를 사용하여 각 열의 너비를 맞춤설정할 수 있습니다. 사용자의 화면 너비가 너무 좁으면 두 번째 열이 첫 번째 열 아래로 줄바꿈됩니다.

  • 웹에서는 화면 너비가 480픽셀 이하인 경우 두 번째 열이 줄바꿈됩니다.
  • iOS 기기에서는 화면 너비가 300pt 이하인 경우 두 번째 열이 줄바꿈됩니다.
  • Android 기기에서 화면 너비가 320dp 이하이면 두 번째 열이 줄바꿈됩니다.

열을 2개 이상 포함하거나 행을 사용하려면 Grid 위젯을 사용하세요.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다. 열을 지원하는 부가기능 UI는 다음과 같습니다.

  • 사용자가 이메일 초안에서 부가기능을 열 때 표시되는 대화상자입니다.
  • 사용자가 Google Calendar 일정의 첨부파일 추가 메뉴에서 부가기능을 열 때 표시되는 대화상자입니다.
JSON 표현
{
  "columnItems": [
    {
      object (Column)
    }
  ]
}
필드
columnItems[]

object (Column)

열 배열입니다. 카드 또는 대화상자에 열을 최대 2개까지 포함할 수 있습니다.

Google Workspace 부가기능 및 Chat 앱

JSON 표현
{
  "horizontalSizeStyle": enum (HorizontalSizeStyle),
  "horizontalAlignment": enum (HorizontalAlignment),
  "verticalAlignment": enum (VerticalAlignment),
  "widgets": [
    {
      object (Widgets)
    }
  ]
}
필드
horizontalSizeStyle

enum (HorizontalSizeStyle)

열이 카드의 너비를 채우는 방식을 지정합니다.

horizontalAlignment

enum (HorizontalAlignment)

위젯을 열의 왼쪽, 오른쪽 또는 가운데에 정렬할지 지정합니다.

verticalAlignment

enum (VerticalAlignment)

위젯이 열의 상단, 하단 또는 가운데에 정렬되는지 지정합니다.

widgets[]

object (Widgets)

열에 포함된 위젯 배열입니다. 위젯은 지정된 순서대로 표시됩니다.

HorizontalSizeStyle

열이 카드의 너비를 채우는 방식을 지정합니다. 각 열의 너비는 HorizontalSizeStyle 및 열 내 위젯의 너비에 따라 다릅니다.

Google Workspace 부가기능 및 Chat 앱

열거형
HORIZONTAL_SIZE_STYLE_UNSPECIFIED 사용하지 마세요. 지정되지 않았습니다.
FILL_AVAILABLE_SPACE 기본값 열이 사용 가능한 공간(카드 너비의 최대 70%)을 채웁니다. 두 열이 모두 FILL_AVAILABLE_SPACE로 설정된 경우 각 열이 공간의 50% 를 채웁니다.
FILL_MINIMUM_SPACE 열은 최대한 적은 공간을 채우며 카드 너비의 30% 를 넘지 않습니다.

HorizontalAlignment

위젯을 열의 왼쪽, 오른쪽 또는 가운데에 정렬할지 지정합니다.

Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다.

열거형
HORIZONTAL_ALIGNMENT_UNSPECIFIED 사용하지 마세요. 지정되지 않았습니다.
START 기본값 열의 시작 위치에 위젯을 정렬합니다. 왼쪽에서 오른쪽 레이아웃의 경우 왼쪽으로 정렬됩니다. 오른쪽에서 왼쪽 레이아웃의 경우 오른쪽에 정렬됩니다.
CENTER 열 중앙에 위젯을 정렬합니다.
END 열의 끝 위치에 위젯을 정렬합니다. 왼쪽에서 오른쪽 레이아웃의 경우 위젯을 오른쪽으로 정렬합니다. 오른쪽에서 왼쪽 레이아웃의 경우 위젯을 왼쪽에 정렬합니다.

VerticalAlignment

위젯이 열의 상단, 하단 또는 가운데에 정렬되는지 지정합니다.

Google Workspace 부가기능 및 Chat 앱

열거형
VERTICAL_ALIGNMENT_UNSPECIFIED 사용하지 마세요. 지정되지 않았습니다.
CENTER 기본값 열 중앙에 위젯을 정렬합니다.
TOP 열 상단에 위젯을 정렬합니다.
BOTTOM 열 하단에 위젯을 정렬합니다.

위젯

열에 포함할 수 있는 지원되는 위젯입니다.

Google Workspace 부가기능 및 Chat 앱

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)
  },
  "chipList": {
    object (ChipList)
  }
  // End of list of possible types for union field data.
}
필드

공용체 필드 data입니다.

data는 다음 중 하나여야 합니다.

textParagraph

object (TextParagraph)

TextParagraph 위젯

image

object (Image)

Image 위젯

decoratedText

object (DecoratedText)

DecoratedText 위젯

buttonList

object (ButtonList)

ButtonList 위젯

textInput

object (TextInput)

TextInput 위젯

selectionInput

object (SelectionInput)

SelectionInput 위젯

dateTimePicker

object (DateTimePicker)

DateTimePicker 위젯

chipList

object (ChipList)

ChipList 위젯

ChipList

가로로 배치된 칩 목록으로, 가로로 스크롤하거나 다음 줄로 래핑할 수 있습니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "layout": enum (Layout),
  "chips": [
    {
      object (Chip)
    }
  ]
}
필드
layout

enum (Layout)

지정된 칩 목록 레이아웃입니다.

chips[]

object (Chip)

칩 배열입니다.

레이아웃

칩 목록 레이아웃

열거형
LAYOUT_UNSPECIFIED 사용하지 마세요. 지정되지 않았습니다.
WRAPPED 기본값 가로 공간이 충분하지 않으면 칩 목록이 다음 줄로 넘어갑니다.
HORIZONTAL_SCROLLABLE 칩이 사용 가능한 공간에 맞지 않으면 가로로 스크롤됩니다.

사용자가 클릭할 수 있는 텍스트, 아이콘 또는 텍스트 및 아이콘 칩입니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "icon": {
    object (Icon)
  },
  "label": string,
  "onClick": {
    object (OnClick)
  },
  "enabled": boolean,
  "disabled": boolean,
  "altText": string
}
필드
icon

object (Icon)

아이콘 이미지 icontext가 모두 설정된 경우 아이콘이 텍스트 앞에 표시됩니다.

label

string

칩 내에 표시되는 텍스트입니다.

onClick

object (OnClick)

선택사항입니다. 사용자가 칩을 클릭할 때 실행할 작업입니다(예: 하이퍼링크 열기, 맞춤 함수 실행).

enabled
(deprecated)

boolean

칩이 활성 상태이고 사용자 작업에 응답하는지 여부입니다. 기본값은 true입니다. 지원 중단되었습니다. 대신 disabled를 사용하세요.

disabled

boolean

칩이 비활성 상태이고 사용자 작업을 무시하는지 여부입니다. 기본값은 false입니다.

altText

string

접근성에 사용되는 대체 텍스트입니다.

사용자가 칩의 기능을 알 수 있도록 설명 텍스트를 설정합니다. 예를 들어 칩이 하이퍼링크를 여는 경우 다음과 같이 작성합니다. '새 브라우저 탭을 열고 https://developers.google.com/workspace/chat"의 Google Chat 개발자 문서로 이동합니다.

캐러셀(슬라이더라고도 함)은 위젯 목록을 슬라이드쇼 형식으로 회전하여 표시하며, 이전 또는 다음 위젯으로 이동하는 버튼이 있습니다.

다음은 텍스트 단락 위젯 3개가 포함된 캐러셀의 JSON 표현입니다.

{
  "carouselCards": [
    {
      "widgets": [
        {
          "textParagraph": {
            "text": "First text paragraph in carousel",
          }
        }
      ]
    },
    {
      "widgets": [
        {
          "textParagraph": {
            "text": "Second text paragraph in carousel",
          }
        }
      ]
    },
    {
      "widgets": [
        {
          "textParagraph": {
            "text": "Third text paragraph in carousel",
          }
        }
      ]
    }
  ]
}

Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다.

JSON 표현
{
  "carouselCards": [
    {
      object (CarouselCard)
    }
  ]
}
필드
carouselCards[]

object (CarouselCard)

캐러셀에 포함된 카드 목록입니다.

CarouselCard

캐러셀 항목으로 표시할 수 있는 카드입니다. Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다.

JSON 표현
{
  "widgets": [
    {
      object (NestedWidget)
    }
  ],
  "footerWidgets": [
    {
      object (NestedWidget)
    }
  ]
}
필드
widgets[]

object (NestedWidget)

캐러셀 카드에 표시되는 위젯 목록입니다. 위젯은 지정된 순서대로 표시됩니다.

footerWidgets[]

object (NestedWidget)

캐러셀 카드 하단에 표시되는 위젯 목록입니다. 위젯은 지정된 순서대로 표시됩니다.

NestedWidget

CarouselCard와 같은 포함 레이아웃에 표시할 수 있는 위젯 목록입니다. Google Chat 앱에서 사용할 수 있으며 Google Workspace 부가기능에서는 사용할 수 없습니다.

JSON 표현
{

  // Union field data can be only one of the following:
  "textParagraph": {
    object (TextParagraph)
  },
  "buttonList": {
    object (ButtonList)
  },
  "image": {
    object (Image)
  }
  // End of list of possible types for union field data.
}
필드

공용체 필드 data입니다.

data는 다음 중 하나여야 합니다.

textParagraph

object (TextParagraph)

텍스트 단락 위젯

buttonList

object (ButtonList)

버튼 목록 위젯

image

object (Image)

이미지 위젯입니다.

CollapseControl

펼치기 및 접기 컨트롤을 나타냅니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "horizontalAlignment": enum (HorizontalAlignment),
  "expandButton": {
    object (Button)
  },
  "collapseButton": {
    object (Button)
  }
}
필드
horizontalAlignment

enum (HorizontalAlignment)

펼치기 및 접기 버튼의 가로 정렬입니다.

expandButton

object (Button)

선택사항입니다. 섹션을 펼칠 수 있는 맞춤설정 가능한 버튼을 정의합니다. expandButton 및 collapseButton 필드를 모두 설정해야 합니다. 필드 세트 하나만 적용되지 않습니다. 이 필드를 설정하지 않으면 기본 버튼이 사용됩니다.

collapseButton

object (Button)

선택사항입니다. 섹션을 접을 수 있는 맞춤설정 가능한 버튼을 정의합니다. expandButton 및 collapseButton 필드를 모두 설정해야 합니다. 필드 세트 하나만 적용되지 않습니다. 이 필드를 설정하지 않으면 기본 버튼이 사용됩니다.

DividerStyle

카드의 구분선 스타일입니다. 현재 카드 섹션 간의 구분선에만 사용됩니다.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

열거형
DIVIDER_STYLE_UNSPECIFIED 사용하지 마세요. 지정되지 않았습니다.
SOLID_DIVIDER 기본 옵션입니다. 단색 구분자를 렌더링합니다.
NO_DIVIDER 이 속성을 설정하면 구분자가 렌더링되지 않습니다. 이 스타일은 레이아웃에서 구분자를 완전히 삭제합니다. 결과는 구분자를 전혀 추가하지 않는 것과 같습니다.

CardAction

카드 작업은 카드와 연결된 작업입니다. 예를 들어 인보이스 카드에는 인보이스 삭제, 인보이스 이메일 전송, 브라우저에서 인보이스 열기와 같은 작업이 포함될 수 있습니다.

Google Workspace 부가기능에는 사용할 수 있으며 Google Chat 앱에는 사용할 수 없습니다.

JSON 표현
{
  "actionLabel": string,
  "onClick": {
    object (OnClick)
  }
}
필드
actionLabel

string

작업 메뉴 항목으로 표시되는 라벨입니다.

onClick

object (OnClick)

이 작업 항목의 onClick 작업입니다.

CardFixedFooter

카드 하단에 표시되는 영구 (고정) 바닥글입니다.

primaryButton 또는 secondaryButton를 지정하지 않고 fixedFooter를 설정하면 오류가 발생합니다.

Chat 앱의 경우 대화상자에서는 고정된 바닥글을 사용할 수 있지만 카드 메시지에서는 사용할 수 없습니다. Google Chat 앱의 예는 영구 바닥글 추가를 참고하세요.

Google Chat 앱 및 Google Workspace 부가기능에서 사용할 수 있습니다.

JSON 표현
{
  "primaryButton": {
    object (Button)
  },
  "secondaryButton": {
    object (Button)
  }
}
필드
primaryButton

object (Button)

고정된 바닥글의 기본 버튼입니다. 버튼은 텍스트와 색상이 설정된 텍스트 버튼이어야 합니다.

secondaryButton

object (Button)

고정된 바닥글의 보조 버튼입니다. 버튼은 텍스트와 색상이 설정된 텍스트 버튼이어야 합니다. secondaryButton가 설정된 경우 primaryButton도 설정해야 합니다.

DisplayStyle

Google Workspace 부가기능에서 카드가 표시되는 방식을 결정합니다.

Google Workspace 부가기능에는 사용할 수 있으며 Google Chat 앱에는 사용할 수 없습니다.

열거형
DISPLAY_STYLE_UNSPECIFIED 사용하지 마세요. 지정되지 않았습니다.
PEEK 카드의 헤더가 사이드바 하단에 표시되어 비슷한 사진의 현재 상단 카드를 부분적으로 가립니다. 헤더를 클릭하면 카드가 카드 스택으로 튀어나옵니다. 카드에 헤더가 없으면 생성된 헤더가 대신 사용됩니다.
REPLACE 기본값 카드는 카드 비슷한 항목의 상단 카드 뷰를 대체하여 표시됩니다.