卡片
資訊卡支援已定義的版面配置、按鈕等互動式 UI 元素,以及圖片等互動式多媒體。使用資訊卡呈現詳細資訊、收集使用者資訊,並引導使用者採取後續步驟。
在 Google Chat 中,資訊卡會顯示在多個位置:
- 單獨訊息。
- 在簡訊下方顯示簡訊。
- 當做對話方塊。
以下 JSON 範例建立具有「特色」功能的「聯絡人卡片」:
- 包含聯絡人姓名、職稱和顯示圖片的標頭。
- 內含聯絡資訊的區段,包括格式化文字。
- 使用者只要按一下按鈕即可分享聯絡人,或查看更多資訊。
{
"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",
}
],
}
}
},
],
}
},
],
},
],
},
}
],
}
JSON 表示法 |
---|
{ "header": { object ( |
欄位 | |
---|---|
header
|
資訊卡的標題。標頭通常會包含主要圖片和標題。標頭一律會顯示在資訊卡頂端。 |
sections[]
|
包含一系列小工具。每個版面都有自己的選用標題。系統會以分隔線分隔多個區段。 |
cardActions[]
|
資訊卡的動作。這些動作會新增至資訊卡的工具列選單。
Chat 應用程式資訊卡沒有工具列,因此 Chat 應用程式不支援
舉例來說,下列 JSON 會使用
|
name
|
卡片名稱。可做為卡片瀏覽中的卡片 ID。 Chat 應用程式不支援資訊卡導覽功能,因此會忽略這個欄位。 |
fixedFooter
|
這張卡片底部顯示的固定頁尾。
設定 適用於 Google Workspace 外掛程式和即時通訊應用程式。如果是 Chat 應用程式,您可以在對話方塊中使用固定的頁尾,但不得用於資訊卡訊息。 |
displayStyle
|
在 Google Workspace 外掛程式中,設定 Chat 應用程式不支援這項功能。 |
peekCardHeader
|
顯示內容時,版資訊卡標頭會做為預留位置,讓使用者在首頁資訊卡與內容資訊卡之間來回瀏覽。 Chat 應用程式不支援這項功能。 |
CardHeader
代表卡片標頭。
JSON 表示法 |
---|
{
"title": string,
"subtitle": string,
"imageType": enum (
|
欄位 | |
---|---|
title
|
必要欄位。資訊卡標題的標題。標題的固定高度:如果同時指定標題和副標題,每個標題都必須佔一行。如果僅指定標題,則兩行會佔用兩行。 |
subtitle
|
資訊卡標題的副標題。如果有指定,其會在 |
imageType
|
用來裁剪圖片的形狀。 |
imageUrl
|
資訊卡標題中的圖片 HTTPS 網址。 |
imageAltText
|
本圖片顯示的無障礙文字。 |
ImageType
用來裁剪圖片的形狀。
列舉 | |
---|---|
SQUARE
|
預設值。套用正方形遮罩。舉例來說,4x3 圖片變成 3x3。 |
CIRCLE
|
為圖片套用圓形遮罩。舉例來說,4x3 的圖片變成圓形直徑為 3 的圓形。 |
區域
區段包含一系列按照指定順序垂直顯示的小工具。
JSON 表示法 |
---|
{
"header": string,
"widgets": [
{
object (
|
欄位 | |
---|---|
header
|
顯示在區段頂端的文字。支援簡易 HTML 格式文字。想進一步瞭解文字格式,請參閱在 Google Chat 應用程式中設定文字格式和在 Google Workspace 外掛程式中設定文字格式。 |
widgets[]
|
區段中的所有小工具。必須至少包含一個小工具。 |
collapsible
|
指出這個部分是否可收合。 可收合的部分會隱藏部分或所有小工具,但使用者可以按一下「顯示更多」,展開這個部分來顯示隱藏的小工具。使用者可以按一下「顯示較少」來隱藏小工具。
如要判斷哪些小工具已隱藏,請指定 |
uncollapsibleWidgetsCount
|
無法收合的小工具數量,即使在收合區段時仍會顯示。
舉例來說,如果一個區段包含五個小工具,且 |
小工具
每張資訊卡都是由小工具組成。
小工具是一種複合物件,可能代表文字、圖片、按鈕及其他物件類型。
JSON 表示法 |
---|
{ "horizontalAlignment": enum ( |
欄位 | |
---|---|
horizontalAlignment
|
指定小工具是否對齊資料欄的左側、中間或中間。 |
聯集欄位 data 。小工具只能包含下列其中一個項目。您可以使用多個小工具欄位來顯示更多項目。data 只能是下列其中一個值: |
|
textParagraph
|
顯示文字段落。支援簡易 HTML 格式文字。想進一步瞭解文字格式,請參閱在 Google Chat 應用程式中設定文字格式和在 Google Workspace 外掛程式中設定文字格式。 例如,下列 JSON 會建立粗體文字:
|
image
|
顯示圖片。 舉例來說,以下 JSON 會建立含有替代文字的圖片:
|
decoratedText
|
顯示裝飾文字項目。 舉例來說,以下 JSON 會建立裝飾文字小工具,當中顯示電子郵件地址:
|
buttonList
|
按鈕清單。 舉例來說,下列 JSON 會建立兩個按鈕。第一個是藍色文字按鈕,第二個則是開啟連結的圖片按鈕:
|
textInput
|
顯示使用者可輸入文字的文字方塊。 舉例來說,下列 JSON 會建立電子郵件地址的文字輸入:
再舉一個例子,下列 JSON 會建立含有靜態建議的程式設計語言文字輸入:
|
selectionInput
|
顯示選取控制項,可讓使用者選取項目。包括控制項、圓形按鈕、切換按鈕或下拉式選單選項。 舉例來說,以下 JSON 會建立下拉式選單,讓使用者選擇大小:
|
dateTimePicker
|
顯示小工具,方便使用者輸入日期、時間,或日期和時間。 舉例來說,下列 JSON 會建立日期時間挑選器,以安排預約時間:
|
divider
|
顯示小工具的水平分隔線。 舉例來說,下列 JSON 會建立分隔線:
|
grid
|
顯示包含一系列項目的格線。 格線支援不限數量的資料欄和項目。列數取決於數字的上方邊界除以欄數。內含 10 個項目和 2 欄的格線共有 5 列。網格內有 11 個項目和 2 欄,共有 6 列。 舉例來說,下列 JSON 會建立包含 1 個項目的 2 個資料欄格線:
|
columns
|
最多可顯示 2 欄。
如要加入超過 2 欄,或使用資料列,請使用 舉例來說,以下 JSON 會建立 2 個資料欄,每個資料欄包含文字段落:
|
文字段落
支援格式設定的文字段落。想進一步瞭解文字格式,請參閱在 Google Chat 應用程式中設定文字格式和在 Google Workspace 外掛程式中設定文字格式。
JSON 表示法 |
---|
{ "text": string } |
欄位 | |
---|---|
text
|
小工具中顯示的文字。 |
圖片
使用網址指定的圖片,且可以執行 onClick
動作。
JSON 表示法 |
---|
{
"imageUrl": string,
"onClick": {
object (
|
欄位 | |
---|---|
imageUrl
|
代管圖片的 HTTPS 網址。 例如:
|
onClick
|
使用者按一下圖片即可觸發這個動作。 |
altText
|
本圖片顯示的無障礙文字。 |
OnClick
代表當使用者點選資訊卡上的互動元素 (例如按鈕) 時的回應方式。
JSON 表示法 |
---|
{ // Union field |
欄位 | |
---|---|
聯集欄位
|
|
action
|
如果有指定,就會由此 |
openLink
|
指定時,此 |
openDynamicLinkAction
|
當需要開啟連結時,外掛程式會觸發這個動作。這與上述 |
card
|
指定新的卡片後,系統會將新資訊卡推送至卡片堆疊。 支援 Google Workspace 外掛程式,但不支援 Chat 應用程式。 |
動作
說明提交表單時的行為。舉例來說,您可以叫用 Apps Script 指令碼來處理表單。如果觸發了動作,系統會將表單值傳送至伺服器。
JSON 表示法 |
---|
{ "function": string, "parameters": [ { object ( |
欄位 | |
---|---|
function
|
使用者點選或延遲啟用內含元素時,叫用的自訂函式。 如需用途範例,請參閱「建立互動式卡片」一文。 |
parameters[]
|
動作參數清單。 |
loadIndicator
|
指定動作在呼叫動作時顯示的載入指標。 |
persistValues
|
表示表單值在動作完成後是否持續存在。預設值為
如果設為
如為 |
interaction
|
選用設定。開啟對話方塊時為必填欄位。 回應使用者互動的方式,例如點選資訊卡訊息中的按鈕。
如未指定,應用程式會照常執行
指定 支援 Chat 應用程式,但不支援 Google Workspace 外掛程式。指定外掛程式時,系統會移除整個資訊卡,用戶端也不會顯示任何內容。 |
ActionParameter
叫用叫用方法時要提供的字串參數清單。例如三個延後按鈕:立即延後、延後一天或延後下週。您可以使用 action method = snooze()
,在字串參數清單中傳遞延後類型和延後時間。
詳情請參閱 CommonEventObject
。
JSON 表示法 |
---|
{ "key": string, "value": string } |
欄位 | |
---|---|
key
|
動作指令碼的參數名稱。 |
value
|
參數的值。 |
LoadIndicator
指定動作在呼叫動作時顯示的載入指標。
列舉 | |
---|---|
SPINNER
|
顯示旋轉圖示,表示正在載入內容。 |
NONE
|
不會顯示任何內容。 |
互動
選用設定。開啟對話方塊時為必填欄位。
回應使用者互動的方式,例如點選資訊卡訊息中的按鈕。
如未指定,應用程式會照常執行 action
(例如開啟連結或執行函式)。
指定 interaction
後,應用程式就能以特殊的互動方式回應。舉例來說,如果將 interaction
設為 OPEN_DIALOG
,應用程式就能開啟對話方塊。
指定時,系統不會顯示載入指標。
支援 Chat 應用程式,但不支援 Google Workspace 外掛程式。指定外掛程式時,系統會移除整個資訊卡,用戶端也不會顯示任何內容。
列舉 | |
---|---|
INTERACTION_UNSPECIFIED
|
預設值。action 會照常執行。 |
OPEN_DIALOG
|
開啟對話方塊,也就是 Chat 應用程式使用的視窗型介面,用於與使用者互動。 只有 Chat 應用程式支援在資訊卡訊息中點選按鈕時提供支援。 Google Workspace 外掛程式不支援這項功能。指定外掛程式時,系統會移除整個資訊卡,用戶端也不會顯示任何內容。 |
OpenLink
代表開啟超連結的 onClick
事件。
JSON 表示法 |
---|
{ "url": string, "openAs": enum ( |
欄位 | |
---|---|
url
|
要開啟的網址。 |
openAs
|
如何開啟連結。Chat 應用程式不支援這項功能。 |
onClose
|
用戶端在開啟連結後忘記關閉連結,還是在視窗關閉前觀察到該連結。Chat 應用程式不支援這項功能。 |
OpenAs
當 OnClick
動作開啟連結時,用戶端可以開啟完整大小視窗 (如果是用戶端使用的頁框) 或重疊元素 (例如彈出式視窗)。實作方式取決於用戶端平台功能,而如果用戶端不支援這項功能,則系統可能會忽略您設定的值。
所有用戶端均支援 FULL_SIZE
。
支援 Google Workspace 外掛程式,但不支援 Chat 應用程式。
列舉 | |
---|---|
FULL_SIZE
|
連結會在原尺寸視窗中開啟 (如果是用戶端使用的頁框)。 |
OVERLAY
|
連結隨即會以重疊元素的形式開啟,例如彈出式視窗。 |
OnClose
關閉由 OnClick
動作開啟的連結時,用戶端會執行的動作。
實作取決於用戶端平台功能。例如,網路瀏覽器可能會使用 OnClose
處理常式在彈出式視窗中開啟連結。
如果同時設定 OnOpen
和 OnClose
處理常式,且用戶端平台不支援這兩種值,則系統會優先採用 OnClose
。
支援 Google Workspace 外掛程式,但不支援 Chat 應用程式。
列舉 | |
---|---|
NOTHING
|
預設值。卡片未重新載入;系統並未執行任何動作。 |
RELOAD
|
在子視窗關閉後重新載入卡片。
與 |
裝飾文字
在小工具上方顯示文字和選用裝飾的文字,例如文字上方或下方、文字前方的圖示、選取小工具,或是文字後方的按鈕。
JSON 表示法 |
---|
{ "icon": { object ( |
欄位 | |
---|---|
icon
|
已淘汰,並改用 |
startIcon
|
顯示在文字前方的圖示。 |
topLabel
|
顯示在 |
text
|
必要欄位。主要文字。 支援簡易格式。想進一步瞭解文字格式,請參閱在 Google Chat 應用程式中設定文字格式和在 Google Workspace 外掛程式中設定文字格式。 |
wrapText
|
文字換行設定。如果設為
僅適用於 |
bottomLabel
|
顯示在 |
onClick
|
使用者按一下 |
聯集欄位 control 。在 decoratedText 小工具右側的文字右側顯示的按鈕、切換按鈕、核取方塊或圖片。control 只能是下列其中一個值: |
|
button
|
使用者可點選的按鈕觸發動作。 |
switchControl
|
使用者可以按一下的切換小工具,用於變更狀態及觸發動作。 |
endIcon
|
文字後方顯示的圖示。 |
圖示
資訊卡上的小工具中顯示的圖示。
JSON 表示法 |
---|
{ "altText": string, "imageType": enum ( |
欄位 | |
---|---|
altText
|
選用設定。無障礙圖示圖示說明。如果未指定,系統會提供預設值
如果您在 |
imageType
|
套用至圖片的裁剪樣式。在某些情況下,套用 |
聯集欄位 icons 。資訊卡小工具上的圖示。icons 只能是下列其中一個值: |
|
knownIcon
|
顯示 Google Workspace 提供的其中一個內建圖示。
舉例來說,如要顯示飛機圖示,請指定 如需完整的支援圖示清單,請參閱內建圖示。 |
iconUrl
|
顯示由 HTTPS 網址代管的自訂圖示。 例如:
支援的檔案類型包括 |
按鈕
使用者可點擊的文字、圖示或文字和圖示按鈕。
如要將圖片設為可點擊按鈕,請指定
(而非 Image
),並設定 ImageComponent
onClick
動作。
JSON 表示法 |
---|
{ "text": string, "icon": { object ( |
欄位 | |
---|---|
text
|
按鈕中顯示的文字。 |
icon
|
圖示圖片。如果同時設定了 |
color
|
如果設定了按鈕,按鈕會填入純底色,字型顏色也會改變,以便與背景顏色形成對比。例如,設定藍色背景可能會產生白色文字。 如未設定,圖片背景為白色,字型顏色為藍色。
以紅色、綠色和藍色表示,每個欄位的值都是兩種表示的
視需要設定
在 舉例來說,下列顏色代表半透明的紅色:
|
onClick
|
必要欄位。使用者點選按鈕時要執行的動作,例如開啟超連結或執行自訂函式。 |
disabled
|
如果設為 |
altText
|
無障礙工具使用的替代文字。 設定說明文字,讓使用者瞭解按鈕的用途。舉例來說,如果某個按鈕會開啟超連結,你可以寫:「開啟新的瀏覽器分頁,然後前往 Google Chat 開發人員說明文件 (https://developers.google.com/chat"」)。 |
顏色
代表 RGBA 色域中的顏色。這個樣式旨在簡化,在各種語言中輕鬆轉換各種語言的色彩配置和情況。舉例來說,此表示法的欄位在 Java 中可以輕易地提供給 java.awt.Color
的建構函式;您也可以宣告在 iOS 中傳遞至 UIColor 的 +colorWithRed:green:blue:alpha
方法,而且只要簡單幾個步驟,就能在 JavaScript 中輕鬆轉換成 CSS rgba()
字串。
這個參考頁面未提供應用於解讀 RGB 值的絕對色彩空間相關資訊,例如 sRGB、Adobe RGB、DCI-P3 和 BT.2020。根據預設,應用程式應假設使用 sRGB 色域。
在需要決定顏色等值時,除非除非另有說明,否則實作項目在紅色、綠色、藍色和 Alpha 值方面最多要等於 1e-5
,且兩種顏色完全相同。
範例 (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();
}
// ...
範例 (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;
}
// ...
範例 (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('');
};
// ...
JSON 表示法 |
---|
{ "red": number, "green": number, "blue": number, "alpha": number } |
欄位 | |
---|---|
red
|
以顏色 [0, 1] 表示的值,在顏色中等於的紅色量。 |
green
|
以顏色 [0, 1] 為單位的值,在顏色中會以綠色值表示。 |
blue
|
以顏色 [0, 1] 為單位的值,表示藍色值的數值。 |
alpha
|
這個顏色應套用至像素的分數。也就是說,最終像素顏色是由方程式定義:
也就是說,1.0 的值代表純色,而 0.0 值則對應至完全透明的顏色。這會使用包裝函式訊息,而非簡單的浮點純量,以便區分預設值和未設定的值。省略時,這個顏色物件會以純色表示 (如同 Alpha 值已明確指定為 1.0 的值)。 |
SwitchControl
切換切換按鈕或 decoratedText
小工具中的核取方塊。
僅適用於 decoratedText
小工具。
JSON 表示法 |
---|
{ "name": string, "value": string, "selected": boolean, "onChangeAction": { object ( |
欄位 | |
---|---|
name
|
表單小工具在表單輸入事件中識別的名稱。 如要進一步瞭解如何使用表單輸入,請參閱接收表單資料。 |
value
|
使用者輸入的值,做為表單輸入事件的一部分傳回。 如要進一步瞭解如何使用表單輸入,請參閱接收表單資料。 |
selected
|
如果選取 |
onChangeAction
|
切換狀態變更時要執行的動作,例如要執行哪些函式。 |
controlType
|
切換使用者介面在使用者介面中的顯示方式。 |
ControlType
切換使用者介面在使用者介面中的顯示方式。
列舉 | |
---|---|
SWITCH
|
切換樣式切換按鈕。 |
CHECKBOX
|
已淘汰,並改用 CHECK_BOX 。 |
CHECK_BOX
|
核取方塊。 |
ButtonList
水平排列的按鈕清單。
JSON 表示法 |
---|
{
"buttons": [
{
object (
|
欄位 | |
---|---|
buttons[]
|
按鈕陣列。 |
文字輸入
使用者可輸入文字的欄位。支援建議和變更動作。
即時通訊應用程式會在表單輸入事件期間接收及處理輸入的文字值。如要進一步瞭解如何使用表單輸入,請參閱接收表單資料。
如果您需要收集使用者的未定義或抽象資料,請使用文字輸入功能。如要收集使用者定義或列舉的資料,請使用 SelectionInput
小工具。
JSON 表示法 |
---|
{ "name": string, "label": string, "hintText": string, "value": string, "type": enum ( |
欄位 | |
---|---|
name
|
文字輸入事件中以文字表示的名稱。 如要進一步瞭解如何使用表單輸入,請參閱接收表單資料。 |
label
|
使用者介面文字輸入欄位上方顯示的文字。
指定文字,協助使用者輸入應用程式所需的資訊。舉例來說,如果您詢問某人的姓名卻需要特別的姓氏,請輸入
如未指定 |
hintText
|
文字輸入欄位下方顯示的文字,提示使用者輸入特定值。這些文字會持續顯示。
如未指定 |
value
|
使用者輸入的值,做為表單輸入事件的一部分傳回。 如要進一步瞭解如何使用表單輸入,請參閱接收表單資料。 |
type
|
文字輸入欄位在使用者介面中的樣貌。例如欄位為單行或多行。 |
onChangeAction
|
文字輸入欄位中發生變更時該如何處理。例如為欄位新增或刪除文字。 具體措施包括執行自訂函式,或是在 Google Chat 中開啟對話方塊。 |
initialSuggestions
|
使用者可輸入的值。當使用者在文字輸入欄位中按一下時,這些值就會出現。當使用者輸入搜尋字詞時,建議值會動態篩選出符合使用者輸入的內容。
舉例來說,程式設計語言的文字輸入欄位可能會建議 Java、JavaScript、Python 和 C++。當使用者開始輸入
建議值可協助引導使用者輸入應用程式可識別的值。參照 JavaScript 時,有些使用者可能會輸入
指定時, |
autoCompleteAction
|
選用設定。指定當使用者在文字輸入欄位中提供互動建議時要採取的行動。
如未指定,建議是由 如果有指定,應用程式就會採用此處指定的動作,例如執行自訂函式。 支援 Google Workspace 外掛程式,但不支援 Chat 應用程式。 |
類型
文字輸入欄位在使用者介面中的樣貌。例如單一行輸入欄位或多行輸入。
如果指定 initialSuggestions
,type
一律為 SINGLE_LINE
,即使設為 MULTIPLE_LINE
也一樣。
列舉 | |
---|---|
SINGLE_LINE
|
文字輸入欄位的一行高度固定為一行。 |
MULTIPLE_LINE
|
文字輸入欄位有多行固定高度。 |
建議
使用者可輸入的值。當使用者在文字輸入欄位中按一下時,這些值就會出現。當使用者輸入搜尋字詞時,建議值會動態篩選出符合使用者輸入的內容。
舉例來說,程式設計語言的文字輸入欄位可能會建議 Java、JavaScript、Python 和 C++。當使用者開始輸入 Jav
時,系統會顯示建議篩選器清單,以顯示 Java
和 JavaScript
。
建議值可協助引導使用者輸入應用程式可識別的值。參照 JavaScript 時,有些使用者可能會輸入 javascript
和 java script
。建議 JavaScript
可以標準化使用者與應用程式互動的方式。
指定時,TextInput.type
一律為 SINGLE_LINE
,即使設為 MULTIPLE_LINE
也一樣。
JSON 表示法 |
---|
{
"items": [
{
object (
|
欄位 | |
---|---|
items[]
|
文字輸入欄位中自動完成自動完成功能的建議清單。 |
SuggestionItem
可在文字輸入欄位中輸入一個建議值。
JSON 表示法 |
---|
{ // Union field |
欄位 | |
---|---|
聯集欄位
|
|
text
|
文字輸入欄位的建議輸入值。這相當於使用者輸入的內容。 |
SelectInputInput
這個小工具會建立一或多個使用者介面,可供使用者選取。例如下拉式選單或核取方塊。您可以使用這個小工具來收集可預測或列舉的資料。
即時通訊應用程式可以處理使用者選取或輸入的項目值。如要進一步瞭解如何使用表單輸入,請參閱接收表單資料。
如要收集使用者的未定義或抽象資料,請使用 TextInput
小工具。
JSON 表示法 |
---|
{ "name": string, "label": string, "type": enum ( |
欄位 | |
---|---|
name
|
識別表單輸入事件中所選輸入內容的名稱。 如要進一步瞭解如何使用表單輸入,請參閱接收表單資料。 |
label
|
使用者介面使用者介面的選取輸入欄位上方顯示的文字。 指定文字,協助使用者輸入應用程式所需的資訊。舉例來說,假設使用者從下拉式選單中選取了工作急迫性,標籤可能會為「緊急」或「選取緊急程度」。 |
type
|
使用者會在 |
items[]
|
可選取項目的陣列。例如圓形按鈕或核取方塊陣列。最多支援 100 個項目。 |
onChangeAction
|
如果指定,表單就會在選取後變更。如未指定,您必須指定用於提交表單的獨立按鈕。 如要進一步瞭解如何使用表單輸入,請參閱接收表單資料。 |
選取類型
使用者可選取的項目格式。不同的選項支援不同類型的互動。舉例來說,使用者可以勾選多個核取方塊,但從下拉式選單中選取一個項目。
每個選擇輸入類型都只能選取一個類型。例如不支援核取方塊和切換按鈕。
列舉 | |
---|---|
CHECK_BOX
|
一組核取方塊。使用者可以選取一或多個核取方塊。 |
RADIO_BUTTON
|
一組圓形按鈕。使用者可以選取一個圓形按鈕。 |
SWITCH
|
一組外接切換裝置。使用者可以開啟一或多個切換按鈕。 |
DROPDOWN
|
下拉式選單。使用者可以從選單中選取一個項目。 |
選取項目
使用者可以在選取輸入內容中選取的項目,例如核取方塊或切換按鈕。
JSON 表示法 |
---|
{ "text": string, "value": string, "selected": boolean } |
欄位 | |
---|---|
text
|
用來識別或描述商品的文字。 |
value
|
與這個項目相關聯的值。用戶端應將其做為表單輸入值。 如要進一步瞭解如何使用表單輸入,請參閱接收表單資料。 |
selected
|
是否預設選取項目。如果所選輸入只接受一個值 (例如圓形按鈕或下拉式選單),請僅為其中一個項目設定這個欄位。 |
日期時間挑選器
可讓使用者輸入日期、時間,或同時輸入日期和時間。
使用者可以輸入文字,或使用挑選器選取日期和時間。如果使用者輸入的日期或時間無效,挑選器會顯示錯誤,提示使用者輸入的資訊。
JSON 表示法 |
---|
{ "name": string, "label": string, "type": enum ( |
欄位 | |
---|---|
name
|
如要進一步瞭解如何使用表單輸入,請參閱接收表單資料。 |
label
|
提示使用者輸入日期、時間,或日期和時間的文字。例如,如果使用者要安排預約,請使用 |
type
|
小工具是否支援輸入日期、時間或日期與時間。 |
valueMsEpoch
|
小工具中顯示的預設值,以 Unix Epoch 紀元時間起算的毫秒數表示。
根據挑選器類型指定值 (
|
timezoneOffsetDate
|
代表時區與世界標準時間相差的時區 (以分鐘為單位)。設定完成後, |
onChangeAction
|
當使用者在 |
DateTimePickerType
DateTimePicker
小工具中的日期和時間格式。決定使用者是否可輸入日期、時間,或同時輸入日期和時間。
列舉 | |
---|---|
DATE_AND_TIME
|
使用者輸入日期和時間。 |
DATE_ONLY
|
使用者輸入日期。 |
TIME_ONLY
|
使用者輸入時間。 |
分隔線
以水平線顯示小工具之間的分隔線。
舉例來說,下列 JSON 會建立分隔線:
"divider": {}
格線
顯示內含一系列項目的格線。項目只能包含文字或圖片。
格線支援不限數量的資料欄和項目。列數取決於項目除以欄數。內含 10 個項目和 2 欄的格線共有 5 列。網格內有 11 個項目和 2 欄,共有 6 列。
針對回應式資料欄,或是加入超過文字或圖片,請使用
。Columns
舉例來說,下列 JSON 會建立包含 1 個項目的 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 ( |
欄位 | |
---|---|
title
|
格線標題中顯示的文字。 |
items[]
|
格線檢視中的項目。 |
borderStyle
|
套用至每個格線項目的邊框樣式。 |
columnCount
|
格線中顯示的欄數。如果未指定這個欄位,則會使用預設值,且預設值會因格狀顯示位置 (對話方塊和隨播廣告) 而異。 |
onClick
|
每個個別格線項目都會重複使用此回呼,但在回呼參數新增的項目清單中,有項目的 ID 和索引。 |
GridItem
以格狀版面配置中的項目呈現。項目可以包含文字、圖片,或是同時包含文字和圖片。
JSON 表示法 |
---|
{ "id": string, "image": { object ( |
欄位 | |
---|---|
id
|
使用者此格線項目指定的 ID。這個 ID 會在父項格線的 |
image
|
格線項目中顯示的圖片。 |
title
|
格線項目標題。 |
subtitle
|
格線項目的子標題。 |
layout
|
用於格線項目的版面配置。 |
ImageComponent
代表圖片。
JSON 表示法 |
---|
{ "imageUri": string, "altText": string, "cropStyle": { object ( |
欄位 | |
---|---|
imageUri
|
圖片網址。 |
altText
|
圖片的無障礙標籤。 |
cropStyle
|
要套用至圖片的裁剪樣式。 |
borderStyle
|
套用至圖片的邊框樣式。 |
ImageCropStyle
代表套用至圖片的裁剪樣式。
以下範例說明如何套用 16:9 的長寬比:
cropStyle {
"type": "RECTANGLE_CUSTOM",
"aspectRatio": 16/9
}
JSON 表示法 |
---|
{
"type": enum (
|
欄位 | |
---|---|
type
|
裁剪類型。 |
aspectRatio
|
如果裁剪類型為 以下範例說明如何套用 16:9 的長寬比:
|
ImageCropType
代表套用至圖片的裁剪樣式。
列舉 | |
---|---|
IMAGE_CROP_TYPE_UNSPECIFIED
|
請勿使用。未指定。 |
SQUARE
|
預設值。套用正方形裁剪。 |
CIRCLE
|
套用圓形裁剪。 |
RECTANGLE_CUSTOM
|
套用自訂長寬比的矩形裁剪功能。使用 aspectRatio 設定自訂顯示比例。 |
RECTANGLE_4_3
|
套用長寬比為 4:3 的矩形裁剪功能。 |
BorderStyle
資訊卡或小工具框線的樣式選項,包括邊框類型和顏色。
JSON 表示法 |
---|
{ "type": enum ( |
欄位 | |
---|---|
type
|
邊框類型。 |
strokeColor
|
類型為 |
cornerRadius
|
框線的圓角半徑。 |
BorderType
代表套用至小工具的邊框類型。
列舉 | |
---|---|
BORDER_TYPE_UNSPECIFIED
|
請勿使用。未指定。 |
NO_BORDER
|
預設值。無邊框。 |
STROKE
|
大綱。 |
GridItemLayout
代表格線項目提供的各種版面配置選項。
列舉 | |
---|---|
GRID_ITEM_LAYOUT_UNSPECIFIED
|
請勿使用。未指定。 |
TEXT_BELOW
|
標題和副標題會顯示在格線項目的圖片下方。 |
TEXT_ABOVE
|
標題和副標題會顯示在格線項目的圖片上方。 |
欄
Columns
小工具最多可在資訊卡訊息或對話方塊中顯示 2 個資料欄。您可以在每一欄中新增小工具;小工具按指定順序顯示。
每個欄的高度是由高的欄決定。舉例來說,如果第一欄的高度高於第二欄,這兩欄的高度即為第一欄。每個欄可包含不同數量的小工具,因此您無法定義資料列,或在不同欄之間對齊小工具。
資料欄並排顯示。您可以使用 HorizontalSizeStyle
欄位自訂每個資料欄的寬度。如果使用者的螢幕寬度太小,第二欄就會位於第一欄下方:
- 在網站上,如果螢幕寬度小於或等於 480 像素,第二欄就會換行。
- 在 iOS 裝置上,如果螢幕寬度小於或等於 300 pt,第二欄就會換行。
- 在 Android 裝置上,如果螢幕寬度小於或等於 320 dp,第二欄就會換行。
如要加入超過 2 欄,或使用資料列,請使用
小工具。Grid
支援 Chat 應用程式,但不支援 Google Workspace 外掛程式。
JSON 表示法 |
---|
{
"columnItems": [
{
object (
|
欄位 | |
---|---|
columnItems[]
|
資料欄陣列。資訊卡或對話方塊中最多可加入 2 個欄。 |
欄
資料欄。
JSON 表示法 |
---|
{ "horizontalSizeStyle": enum ( |
欄位 | |
---|---|
horizontalSizeStyle
|
說明資料欄如何填滿資訊卡寬度。 |
horizontalAlignment
|
指定小工具是否對齊資料欄的左側、中間或中間。 |
verticalAlignment
|
指定小工具是否與資料欄頂端、底部或中央對齊。 |
widgets[]
|
一欄內含小工具陣列。小工具會依照指定的順序顯示。 |
HorizontalSizeStyle
說明資料欄如何填滿資訊卡寬度。每個欄的寬度都取決於 HorizontalSizeStyle
和該欄中小工具的寬度。
列舉 | |
---|---|
HORIZONTAL_SIZE_STYLE_UNSPECIFIED
|
請勿使用。未指定。 |
FILL_AVAILABLE_SPACE
|
預設值。欄會填滿可用空間,最多可達資訊卡寬度的 70%。如果兩個資料欄都設為 FILL_AVAILABLE_SPACE ,每個資料欄都會填滿 50% 的空間。 |
FILL_MINIMUM_SPACE
|
欄會填滿空間下限,而且不會超過資訊卡寬度的 30%。 |
HorizontalAlignment
指定小工具是否對齊資料欄的左側、中間或中間。
列舉 | |
---|---|
HORIZONTAL_ALIGNMENT_UNSPECIFIED
|
請勿使用。未指定。 |
START
|
預設值。將小工具對齊欄的起始位置。如果是由左到右的版面配置,請靠左對齊。從右到左的版面配置,會對齊右側。 |
CENTER
|
將小工具對齊資料欄的中央。 |
END
|
將小工具對齊欄的結尾位置。針對由左到右的版面配置,將小工具對齊右側。使用由右到左的版面配置,將小工具對齊左側。 |
VerticalAlignment
指定小工具是否與資料欄頂端、底部或中央對齊。
列舉 | |
---|---|
VERTICAL_ALIGNMENT_UNSPECIFIED
|
請勿使用。未指定。 |
CENTER
|
預設值。將小工具對齊資料欄的中央。 |
TOP
|
將小工具對齊資料欄頂端。 |
BOTTOM
|
將小工具對齊資料欄底部。 |
小工具
支援中可加入一欄的小工具。
JSON 表示法 |
---|
{ // Union field |
欄位 | |
---|---|
聯集欄位
|
|
textParagraph
|
「 |
image
|
「 |
decoratedText
|
「 |
buttonList
|
「 |
textInput
|
「 |
selectionInput
|
「 |
dateTimePicker
|
「 |
CardAction
資訊卡動作是指與資訊卡相關的動作。舉例來說,應付憑據資訊卡可能包含多項操作,例如刪除月結單、電子郵件發票,或是在瀏覽器中開啟發票。
Chat 應用程式不支援這項功能。
JSON 表示法 |
---|
{
"actionLabel": string,
"onClick": {
object (
|
欄位 | |
---|---|
actionLabel
|
顯示為動作選單項目的標籤。 |
onClick
|
此操作項目的 |
DisplayStyle
在 Google Workspace 外掛程式中,決定卡片的顯示方式。
Chat 應用程式不支援這項功能。
列舉 | |
---|---|
DISPLAY_STYLE_UNSPECIFIED
|
請勿使用。未指定。 |
PEEK
|
資訊卡標題會顯示在側欄底部,部分為堆疊頂端的資訊卡頂端。只要點選標題,即可將資訊卡彈出至資訊卡堆疊中。如果資訊卡沒有標頭,系統會改用產生的標頭。 |
REPLACE
|
預設值。資訊卡會取代資訊卡堆疊頂端的頂端資訊卡,藉此顯示這張資訊卡。 |