# Format Paragraph — Google Docs

> Apply paragraph formatting (heading style, alignment, line spacing, indentation) in a Google Doc. Locate the paragraph with Find Text, or pass an explicit Start Index and End Index. Google Docs applies paragraph styles to whole paragraphs…

- Key: `google_docs-format-paragraph`
- Type: Action (Write)
- Version: 0.0.3
- App: Google Docs (`google_docs`) — https://pipedream.com/apps/google-docs.md
- This page (HTML): https://pipedream.com/apps/google-docs/actions/format-paragraph
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/google_docs/actions/format-paragraph/format-paragraph.mjs

## Description

Apply paragraph formatting (heading style, alignment, line spacing, indentation) in a Google Doc. Locate the paragraph with **Find Text**, or pass an explicit **Start Index** and **End Index**. Google Docs applies paragraph styles to whole paragraphs, so every paragraph the range touches is restyled, not just the matched text. [See the documentation](https://developers.google.com/workspace/docs/api/reference/rest/v1/documents/request#UpdateParagraphStyleRequest)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `documentId` | `string` | Yes | The ID of the Google Doc. This is the long string in the document's URL: https://docs.google.com/document/d/{DOCUMENT_ID}/edit. Use Find Document to resolve a document's name to its ID. |
| `find` | `string` | No | The text to style. The action locates it in the document and styles each match selected by Occurrence. Leave blank only if you are supplying Start Index and End Index instead. |
| `occurrence` | `string` | No | Which matches of Find Text to style: first (default) or all. |
| `matchCase` | `boolean` | No | Case sensitive search (true) or not (false). Defaults to false |
| `startIndex` | `integer` | No | Character index to style from, inclusive. Use with End Index instead of Find Text. Indices come from Get Document and shift after every edit, so prefer Find Text. |
| `endIndex` | `integer` | No | Character index to style up to, exclusive. Must be greater than Start Index. |
| `tabId` | `string` | No | For a multi-tab document, restrict the operation to this tab (e.g. t.0). Get tab IDs from List Tabs. Omit to search every tab for Find Text; an explicit Start Index / End Index without a Tab ID applies to the first tab only. |
| `namedStyleType` | `string` | No | Named style to apply, e.g. HEADING_1 for a top-level heading or NORMAL_TEXT to clear one. |
| `alignment` | `string` | No | Paragraph alignment. START is left-aligned in a left-to-right document. |
| `lineSpacing` | `integer` | No | Line spacing as a percentage of normal (100 = single, 150 = 1.5x, 200 = double). Range 1-1000. |
| `spaceAbove` | `integer` | No | Space above the paragraph, in points (0-500). |
| `spaceBelow` | `integer` | No | Space below the paragraph, in points (0-500). |
| `indentStart` | `integer` | No | Indentation from the start (left, in a left-to-right document) side, in points (0-500). |
| `indentEnd` | `integer` | No | Indentation from the end (right, in a left-to-right document) side, in points (0-500). |
| `keepLinesTogether` | `boolean` | No | Set true to keep the paragraph's lines on one page where possible, false to allow it to break across pages. Leave unset to keep it unchanged. |
| `keepWithNext` | `boolean` | No | Set true to keep at least part of the paragraph on the same page as the paragraph that follows it. Leave unset to keep it unchanged. |
| `indentFirstLine` | `integer` | No | Indentation of the paragraph's first line, in points (0-500). |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "google_docs",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "google_docs-format-paragraph",
  arguments: {
    documentId: "Document ID",
    find: "Find Text",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "google_docs-format-paragraph",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    google_docs: { authProvisionId: "apn_xxxxxxx" },
    documentId: "Document ID",
    find: "Find Text",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "google_docs-format-paragraph",
    "configured_props": {
      "google_docs": { "authProvisionId": "apn_xxxxxxx" },
      "documentId": "Document ID",
      "find": "Find Text"
    }
  }'
```

---

- App: https://pipedream.com/apps/google-docs.md · All apps: https://pipedream.com/apps
