CardAction

A clickable menu item that is added to the card header menu.

```javascript
const action = CardService.newAction();
// Finish building the action...

const cardAction =
    CardService.newCardAction().setText('Card action').setOnClickAction(action);
```

### Methods

| Method | Return type | Brief description |
|---|---|---|
| `https://developers.google.com/apps-script/reference/card-service/card-action#setAuthorizationAction(AuthorizationAction)` | `https://developers.google.com/apps-script/reference/card-service/card-action#` | Sets an authorization action that opens a URL to the authorization flow when the object is clicked. |
| `https://developers.google.com/apps-script/reference/card-service/card-action#setComposeAction(Action,ComposedEmailType)` | `https://developers.google.com/apps-script/reference/card-service/card-action#` | Sets an action that composes a draft email when the object is clicked. |
| `https://developers.google.com/apps-script/reference/card-service/card-action#setOnClickAction(Action)` | `https://developers.google.com/apps-script/reference/card-service/card-action#` | Sets an action that executes when the object is clicked. |
| `https://developers.google.com/apps-script/reference/card-service/card-action#setOnClickOpenLinkAction(Action)` | `https://developers.google.com/apps-script/reference/card-service/card-action#` | Sets an action that opens a URL in a tab when the object is clicked. |
| `https://developers.google.com/apps-script/reference/card-service/card-action#setOpenLink(OpenLink)` | `https://developers.google.com/apps-script/reference/card-service/card-action#` | Sets a URL to be opened when the object is clicked. |
| `https://developers.google.com/apps-script/reference/card-service/card-action#setText(String)` | `https://developers.google.com/apps-script/reference/card-service/card-action#` | Sets the menu text for this action. |

## Detailed documentation

### `setAuthorizationAction(action)`

Sets an authorization action that opens a URL to the authorization flow when the object is
clicked. This opens the URL in a new window. When the user finishes the authorization flow and
returns to the application, the add-on reloads.

A UI object can only have one of `https://developers.google.com/apps-script/reference/card-service/card-action#setOpenLink(OpenLink)`, `https://developers.google.com/apps-script/reference/card-service/card-action#setOnClickAction(Action)`, `https://developers.google.com/apps-script/reference/card-service/card-action#setOnClickOpenLinkAction(Action)`, `https://developers.google.com/apps-script/reference/card-service/card-action#setAuthorizationAction(AuthorizationAction)`, or `https://developers.google.com/apps-script/reference/card-service/card-action#setComposeAction(Action,ComposedEmailType)` set.

```javascript
// ...

const action = CardService.newAuthorizationAction().setAuthorizationUrl('url');
CardService.newTextButton().setText('Authorize').setAuthorizationAction(action);
```

#### Parameters

| Name | Type | Description |
|---|---|---|
| `action` | `https://developers.google.com/apps-script/reference/card-service/authorization-action` | The object that specifies the authorization action to take when this element is clicked. |

#### Return


`https://developers.google.com/apps-script/reference/card-service/card-action#` --- This object, for chaining.

*** ** * ** ***

### `setComposeAction(action, composedEmailType)`

Sets an action that composes a draft email when the object is clicked. A UI object can only
have one of `https://developers.google.com/apps-script/reference/card-service/card-action#setOpenLink(OpenLink)`, `https://developers.google.com/apps-script/reference/card-service/card-action#setOnClickAction(Action)`, `https://developers.google.com/apps-script/reference/card-service/card-action#setOnClickOpenLinkAction(Action)`,
`https://developers.google.com/apps-script/reference/card-service/card-action#setAuthorizationAction(AuthorizationAction)`, or `https://developers.google.com/apps-script/reference/card-service/card-action#setComposeAction(Action,ComposedEmailType)` set.

The `https://developers.google.com/apps-script/reference/card-service/action` parameter must specify a callback function that returns a `https://developers.google.com/apps-script/reference/card-service/compose-action-response` object configured using `https://developers.google.com/apps-script/reference/card-service/compose-action-response-builder#setGmailDraft(GmailDraft)`.


> [!NOTE]
> **Note** : This method doesn't set a **compose action** that is used to [extend the compose UI](https://developers.google.com/gmail/add-ons/how-tos/extending-compose-ui). Rather, this method connects this UI element to an `https://developers.google.com/apps-script/reference/card-service/action` that [composes draft messages](https://developers.google.com/gmail/add-ons/how-tos/compose) in Apps Script that are opened in Gmail when the action completes.

<br />

```javascript
// ...

const action = CardService.newAction().setFunctionName('composeEmailCallback');
CardService.newTextButton()
    .setText('Compose Email')
    .setComposeAction(action, CardService.ComposedEmailType.REPLY_AS_DRAFT);

// ...

function composeEmailCallback(e) {
  const thread = GmailApp.getThreadById(e.threadId);
  const draft = thread.createDraftReply('This is a reply');
  return CardService.newComposeActionResponseBuilder()
      .setGmailDraft(draft)
      .build();
}
```

#### Parameters

| Name | Type | Description |
|---|---|---|
| `action` | `https://developers.google.com/apps-script/reference/card-service/action` | The object that specifies the compose action to take when this element is clicked. |
| `composedEmailType` | `https://developers.google.com/apps-script/reference/card-service/composed-email-type` | An enum value that specifies whether the composed draft is a standalone or reply draft. |

#### Return


`https://developers.google.com/apps-script/reference/card-service/card-action#` --- This object, for chaining.

*** ** * ** ***

### `setOnClickAction(action)`

Sets an action that executes when the object is clicked. A UI object can only have one of
`https://developers.google.com/apps-script/reference/card-service/card-action#setOpenLink(OpenLink)`, `https://developers.google.com/apps-script/reference/card-service/card-action#setOnClickAction(Action)`, `https://developers.google.com/apps-script/reference/card-service/card-action#setOnClickOpenLinkAction(Action)`, `https://developers.google.com/apps-script/reference/card-service/card-action#setAuthorizationAction(AuthorizationAction)`, or `https://developers.google.com/apps-script/reference/card-service/card-action#setComposeAction(Action,ComposedEmailType)` set.

The `https://developers.google.com/apps-script/reference/card-service/action` parameter must specify a callback function that returns a `https://developers.google.com/apps-script/reference/card-service/action-response` object.

```javascript
// ...

const action = CardService.newAction().setFunctionName('notificationCallback');
CardService.newTextButton()
    .setText('Create notification')
    .setOnClickAction(action);

// ...

function notificationCallback() {
  return CardService.newActionResponseBuilder()
      .setNotification(
          CardService.newNotification().setText('Some info to display to user'),
          )
      .build();
}
```

#### Parameters

| Name | Type | Description |
|---|---|---|
| `action` | `https://developers.google.com/apps-script/reference/card-service/action` | The action to take when this element is clicked. |

#### Return


`https://developers.google.com/apps-script/reference/card-service/card-action#` --- This object, for chaining.

*** ** * ** ***

### `setOnClickOpenLinkAction(action)`

Sets an action that opens a URL in a tab when the object is clicked. Use this function when the
URL needs to be built or when you need to take other actions in addition to creating the `https://developers.google.com/apps-script/reference/card-service/open-link` object. A UI object can only have one of `https://developers.google.com/apps-script/reference/card-service/card-action#setOpenLink(OpenLink)`, `https://developers.google.com/apps-script/reference/card-service/card-action#setOnClickAction(Action)`, `https://developers.google.com/apps-script/reference/card-service/card-action#setOnClickOpenLinkAction(Action)`, `https://developers.google.com/apps-script/reference/card-service/card-action#setAuthorizationAction(AuthorizationAction)`, or
`https://developers.google.com/apps-script/reference/card-service/card-action#setComposeAction(Action,ComposedEmailType)` set.

The `https://developers.google.com/apps-script/reference/card-service/action` parameter must specify a callback function that returns a `https://developers.google.com/apps-script/reference/card-service/action-response` object configured using `https://developers.google.com/apps-script/reference/card-service/action-response-builder#setOpenLink(OpenLink)`.

```javascript
// ...

const action = CardService.newAction().setFunctionName('openLinkCallback');
CardService.newTextButton()
    .setText('Open Link')
    .setOnClickOpenLinkAction(action);

// ...

function openLinkCallback() {
  return CardService.newActionResponseBuilder()
      .setOpenLink(CardService.newOpenLink().setUrl('https://www.google.com'))
      .build();
}
```

#### Parameters

| Name | Type | Description |
|---|---|---|
| `action` | `https://developers.google.com/apps-script/reference/card-service/action` | The object that specifies the open link action to take when this element is clicked. |

#### Return


`https://developers.google.com/apps-script/reference/card-service/card-action#` --- This object, for chaining.

*** ** * ** ***

### `setOpenLink(openLink)`

Sets a URL to be opened when the object is clicked. Use this function when the URL is already
known and only needs to be opened. A UI object can only have one of `https://developers.google.com/apps-script/reference/card-service/card-action#setOpenLink(OpenLink)`,
`https://developers.google.com/apps-script/reference/card-service/card-action#setOnClickAction(Action)`, `https://developers.google.com/apps-script/reference/card-service/card-action#setOnClickOpenLinkAction(Action)`, `https://developers.google.com/apps-script/reference/card-service/card-action#setAuthorizationAction(AuthorizationAction)`,
or `https://developers.google.com/apps-script/reference/card-service/card-action#setComposeAction(Action,ComposedEmailType)` set.

#### Parameters

| Name | Type | Description |
|---|---|---|
| `openLink` | `https://developers.google.com/apps-script/reference/card-service/open-link` | An `https://developers.google.com/apps-script/reference/card-service/open-link` object describing the URL to open. |

#### Return


`https://developers.google.com/apps-script/reference/card-service/card-action#` --- This object, for chaining.

*** ** * ** ***

### `setText(text)`

Sets the menu text for this action.

#### Parameters

| Name | Type | Description |
|---|---|---|
| `text` | `String` | The menu item text. |

#### Return


`https://developers.google.com/apps-script/reference/card-service/card-action#` --- This object, for chaining.