一种可在界面元素内实现互动性的操作。该操作不会直接在客户端上发生,而是会调用带有可选参数的 Apps 脚本回调函数。
适用于 Google Workspace 加载项和 Google Chat 应用。
const image = CardService.newImage().setOnClickAction( CardService.newAction().setFunctionName('handleImageClick').setParameters({ imageSrc: 'carImage' }), );
方法
| 方法 | 返回类型 | 简介 |
|---|---|---|
add | Action | 添加了相应 widget 的名称,以便此操作能够有效提交。 |
set | Action | 表示相应操作是否需要来自所有 widget 的输入。 |
set | Action | 设置要调用的回调函数的名称。 |
set | Action | 设置与用户的互动,仅在打开对话框时需要。 |
set | Action | 设置在操作进行期间显示的加载指示器。 |
set | Action | 允许将自定义参数传递给回调函数。 |
set | Action | 指示在操作响应更新表单的 Card 后,表单值是由客户端的值还是服务器的值确定。 |
详细文档
addRequiredWidget(requiredWidget)
添加了相应操作需要哪些 widget 才能有效提交。如果此列表中的 widget 在调用此 Action 时没有值,则表单提交会中止。
适用于 Google Workspace 加载项和 Google Chat 应用。
const textInput = CardService.newTextInput() .setFieldName('text_input_1') .setTitle('Text input title'); // Creates a footer button that requires an input from the above TextInput // Widget. const action = CardService.newAction() .setFunctionName('notificationCallback') .addRequiredWidget('text_input_1'); const fixedFooter = CardService.newFixedFooter().setPrimaryButton( CardService.newTextButton().setText('help').setOnClickAction(action), );
参数
| 名称 | 类型 | 说明 |
|---|---|---|
required | String | 相应操作所需的 widget 的名称。 |
返回
Action - 此对象,用于链式调用。
setAllWidgetsAreRequired(allWidgetsAreRequired)
表示此操作是否需要来自所有 widget 的输入。
适用于 Google Workspace 加载项和 Google Chat 应用。
// Creates a button with an action that requires inputs from all widgets. const button = CardService.newTextButton() .setText('Create notification') .setOnClickAction( CardService.newAction().setAllWidgetsAreRequired(true));
参数
| 名称 | 类型 | 说明 |
|---|---|---|
all | Boolean | 操作是否需要来自所有 widget 的输入。默认值为 false。 |
返回
Action - 此对象,用于链式调用。
setFunctionName(functionName)
设置要调用的回调函数的名称。必填。
参数
| 名称 | 类型 | 说明 |
|---|---|---|
function | String | 函数的名称。您可以使用所含库中的函数,例如 Library.libFunction1。 |
返回
Action - 此对象,用于链式调用。
setInteraction(interaction)
设置与用户的互动,仅在打开对话框时需要。如果未指定,应用会像往常一样通过执行 Action(例如打开链接或运行函数)来做出响应。
仅适用于 Google Chat 应用。不适用于 Google Workspace 加购项。
const action = CardService.newAction() .setFunctionName('handleDialog') .setInteraction(CardService.Interaction.OPEN_DIALOG);
参数
| 名称 | 类型 | 说明 |
|---|---|---|
interaction | Interaction | 要指定的互动。 |
返回
Action - 此对象,用于链式调用。
setLoadIndicator(loadIndicator)
setParameters(parameters)
setPersistValues(persistValues)
指示在操作响应更新表单的 Card 后,表单值是由客户端的值还是服务器的值确定。如果设置为 true,客户端的值在服务器响应后会保持不变。设置为 false 时,服务器的值会覆盖表单值。默认值为 false。
持久保留客户端值有助于防止用户进行编辑后表单意外更改的情况。例如,如果用户在提交表单后但在服务器响应之前对 TextInput 进行了修改。如果这些值是持久的,则在服务器响应更新 Card 后,用户所做的编辑仍会保留;否则,表单值会恢复为用户最初提交给表单的值。
保留客户端值可能会干扰脚本清除表单字段或替换表单值的能力,因此请避免为此类功能启用持久性。如果不使用持久性,建议您为事件使用 LoadIndicator.SPINNER,因为这会锁定界面,并防止用户在服务器响应之前进行编辑。或者,您也可以使用 LoadIndicator.NONE 并确保表单中的每个元素都有 onChange 操作。
// Creates a button with an action that persists the client's values as the // on-click action. const button = CardService.newTextButton() .setText('Create notification') .setOnClickAction( CardService.newAction().setPersistValues(true).setFunctionName( 'functionName'), );
参数
| 名称 | 类型 | 说明 |
|---|---|---|
persist | Boolean | 是否保留值。默认为 false。 |
返回
Action - 此对象,用于链式调用。