# Create Report — Google Ads

> Generates a report from your Google Ads data. See the documentation

- Key: `google_ads-create-report`
- Type: Action (Read-only)
- Version: 0.3.0
- App: Google Ads (`google_ads`) — https://pipedream.com/apps/google-ads.md
- This page (HTML): https://pipedream.com/apps/google-ads/actions/create-report
- Hints: read-only · open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/google_ads/actions/create-report/create-report.mjs

## Description

Generates a report from your Google Ads data. [See the documentation](https://developers.google.com/google-ads/api/reference/rpc/v25/GoogleAdsService/Search?transport=rest)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `accountId` | `string` | Yes | The ID of an account of a customer directly accessible by the authenticated user. This is usually a Manager Account, used as login-customer-id (e.g., 1234567890). Use the List Account ID Options action to get the list of accessible accounts. Options are loaded from the connected account. |
| `customerClientId` | `string` | No | The ID of a customer client from the list of customers linked to the selected account (e.g., 1234567890). Use the List Customer Clients action to get the list of customer clients. Options are loaded from the connected account. |
| `resource` | `string` | Yes | The resource to generate a report for. |
| `objectFilter` | `string[]` | No | Google Ads resource IDs to limit the report to. Pass a string array of numeric IDs (e.g. ["1234567890", "9876543210"]). Omit to include all resources. Options are loaded from the connected account. |
| `dateRange` | `string` | No | Predefined Google Ads date range keyword (e.g. LAST_30_DAYS, THIS_MONTH). For a custom range, use CUSTOM with startDate and endDate in YYYY-MM-DD format (e.g. 2024-01-01, 2024-01-31). |
| `startDate` | `string` | No | The start date in YYYY-MM-DD format (e.g. 2024-01-01). Only relevant if Date Range is set to CUSTOM. |
| `endDate` | `string` | No | The end date in YYYY-MM-DD format (e.g. 2024-01-31). Only relevant if Date Range is set to CUSTOM. |
| `fields` | `string[]` | No | Resource field names for the GAQL SELECT clause. Pass a string array (e.g. ["id", "name"] or ["campaign.id", "campaign.name"] for campaign reports). Options are loaded from the connected account. |
| `segments` | `string[]` | No | Segment field names to include (e.g. ["date"] or ["segments.date"]). See the documentation here. Options are loaded from the connected account. |
| `metrics` | `string[]` | No | Metric field names to include (e.g. ["impressions", "clicks"] or ["metrics.impressions", "metrics.clicks"]). See the documentation here. Options are loaded from the connected account. |
| `orderBy` | `string` | No | The field to order the results by Options are loaded from the connected account. |
| `direction` | `string` | No | The direction to order the results by, if Order By is specified |
| `limit` | `integer` | No | The maximum number of results to return |

## 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_ads",
      },
    },
  },
)

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_ads-create-report",
  arguments: {
    accountId: "Use Google Ads As",
    customerClientId: "Managed Account",
  },
})
```

**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_ads-create-report",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    google_ads: { authProvisionId: "apn_xxxxxxx" },
    accountId: "Use Google Ads As",
    customerClientId: "Managed Account",
  },
})

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_ads-create-report",
    "configured_props": {
      "google_ads": { "authProvisionId": "apn_xxxxxxx" },
      "accountId": "Use Google Ads As",
      "customerClientId": "Managed Account"
    }
  }'
```

---

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