Action
物件可讓您建構互動式
行為嵌入 Google Workspace 外掛程式會定義
使用者與小工具 (例如按鈕) 互動後會發生什麼事
外掛程式 UI
您可以使用 小工具處理常式函式, 這也會定義觸發動作的條件。觸發時,動作會執行指定的回呼函式。回呼函式會傳遞事件物件,該物件會攜帶使用者用戶端互動資訊。您必須實作回呼函式,並讓回呼函式傳回特定回應物件。
舉例來說,假設您希望按鈕在點選時建立並顯示新卡片。為此,您必須建立新的按鈕小工具,並使用按鈕小工具
處理常式函式
setOnClickAction(action)
設定卡片建構 Action
。
您定義的 Action
指定了 Apps Script
使用者點選按鈕時執行的回呼函式。在這個範例中
實作回呼函式來建構所需卡片,並傳回
ActionResponse
物件。回應物件會告知外掛程式顯示回呼函式建立的卡片。
本頁面說明可在外掛程式中加入的特定日曆小工具動作。
日曆互動
支援 Google 日曆功能的 Google Workspace 外掛程式 則可加入一些額外的 Google 日曆小工具動作。這些動作需要相關聯的動作 回呼函式,才能傳回專門的回應物件:
已嘗試操作 | 回呼函式應傳回 |
---|---|
新增與會者 | CalendarEventActionResponse |
設定會議資料 | CalendarEventActionResponse |
新增附件 | CalendarEventActionResponse |
如要使用這些小工具動作和回應物件,請執行下列所有項目 須為 true:
- 在使用者開啟日曆活動時觸發動作。
- 外掛程式的
addOns.calendar.currentEventAccess
資訊清單欄位設為WRITE
或READ_WRITE
。 - 外掛程式包含
https://www.googleapis.com/auth/calendar.addons.current.event.write
日曆範圍。
此外,系統不會儲存動作回呼函式所做的任何變更,直到 使用者儲存日曆活動。
使用回呼函式新增與會者
以下範例說明如何建立按鈕,將特定出席者新增至正在編輯的 Google 日曆活動:
/**
* Build a simple card with a button that sends a notification.
* This function is called as part of the eventOpenTrigger that builds
* a UI when the user opens an event.
*
* @param e The event object passed to eventOpenTrigger function.
* @return {Card}
*/
function buildSimpleCard(e) {
var buttonAction = CardService.newAction()
.setFunctionName('onAddAttendeesButtonClicked');
var button = CardService.newTextButton()
.setText('Add new attendee')
.setOnClickAction(buttonAction);
// Check the event object to determine if the user can add
// attendees and disable the button if not.
if (!e.calendar.capabilities.canAddAttendees) {
button.setDisabled(true);
}
// ...continue creating card sections and widgets, then create a Card
// object to add them to. Return the built Card object.
}
/**
* Callback function for a button action. Adds attendees to the
* Calendar event being edited.
*
* @param {Object} e The action event object.
* @return {CalendarEventActionResponse}
*/
function onAddAttendeesButtonClicked (e) {
return CardService.newCalendarEventActionResponseBuilder()
.addAttendees(["aiko@example.com", "malcom@example.com"])
.build();
}
使用回呼函式設定會議資料
這項動作會在開放活動上設定會議資料。針對這項會議資料,您需要指定會議解決方案 ID,因為這項動作並非由使用者選取所需解決方案所觸發。
以下範例說明如何建立按鈕,為要編輯的活動設定會議資料:
/**
* Build a simple card with a button that sends a notification.
* This function is called as part of the eventOpenTrigger that builds
* a UI when the user opens a Calendar event.
*
* @param e The event object passed to eventOpenTrigger function.
* @return {Card}
*/
function buildSimpleCard(e) {
var buttonAction = CardService.newAction()
.setFunctionName('onSaveConferenceOptionsButtonClicked')
.setParameters(
{'phone': "1555123467", 'adminEmail': "joyce@example.com"});
var button = CardService.newTextButton()
.setText('Add new attendee')
.setOnClickAction(buttonAction);
// Check the event object to determine if the user can set
// conference data and disable the button if not.
if (!e.calendar.capabilities.canSetConferenceData) {
button.setDisabled(true);
}
// ...continue creating card sections and widgets, then create a Card
// object to add them to. Return the built Card object.
}
/**
* Callback function for a button action. Sets conference data for the
* Calendar event being edited.
*
* @param {Object} e The action event object.
* @return {CalendarEventActionResponse}
*/
function onSaveConferenceOptionsButtonClicked(e) {
var parameters = e.commonEventObject.parameters;
// Create an entry point and a conference parameter.
var phoneEntryPoint = ConferenceDataService.newEntryPoint()
.setEntryPointType(ConferenceDataService.EntryPointType.PHONE)
.setUri('tel:' + parameters['phone']);
var adminEmailParameter = ConferenceDataService.newConferenceParameter()
.setKey('adminEmail')
.setValue(parameters['adminEmail']);
// Create a conference data object to set to this Calendar event.
var conferenceData = ConferenceDataService.newConferenceDataBuilder()
.addEntryPoint(phoneEntryPoint)
.addConferenceParameter(adminEmailParameter)
.setConferenceSolutionId('myWebScheduledMeeting')
.build();
return CardService.newCalendarEventActionResponseBuilder()
.setConferenceData(conferenceData)
.build();
}
使用回呼函式新增附件
下列範例說明如何建立一個按鈕,以將附件新增至 正在編輯的日曆活動:
/**
* Build a simple card with a button that creates a new attachment.
* This function is called as part of the eventAttachmentTrigger that
* builds a UI when the user goes through the add-attachments flow.
*
* @param e The event object passed to eventAttachmentTrigger function.
* @return {Card}
*/
function buildSimpleCard(e) {
var buttonAction = CardService.newAction()
.setFunctionName('onAddAttachmentButtonClicked');
var button = CardService.newTextButton()
.setText('Add a custom attachment')
.setOnClickAction(buttonAction);
// Check the event object to determine if the user can add
// attachments and disable the button if not.
if (!e.calendar.capabilities.canAddAttachments) {
button.setDisabled(true);
}
// ...continue creating card sections and widgets, then create a Card
// object to add them to. Return the built Card object.
}
/**
* Callback function for a button action. Adds attachments to the Calendar
* event being edited.
*
* @param {Object} e The action event object.
* @return {CalendarEventActionResponse}
*/
function onAddAttachmentButtonClicked(e) {
return CardService.newCalendarEventActionResponseBuilder()
.addAttachments([
CardService.newAttachment()
.setResourceUrl("https://example.com/test")
.setTitle("Custom attachment")
.setMimeType("text/html")
.setIconUrl("https://example.com/test.png")
])
.build();
}
設定附件圖示
附件圖示必須託管在 Google 基礎架構上。請參閱提供 附件圖示 。