# New Row Added (Instant) — Google Sheets

> Emit new event each time a row or rows are added to the bottom of a spreadsheet.

- Key: `google_sheets-new-row-added`
- Type: Trigger (Polling)
- Version: 0.2.7
- App: Google Sheets (`google_sheets`) — https://pipedream.com/apps/google-sheets.md
- This page (HTML): https://pipedream.com/apps/google-sheets/triggers/new-row-added
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/google_sheets/sources/new-row-added/new-row-added.mjs

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `timer` | `$.interface.timer` | Yes | The Google Drive API requires occasionally renewal of push notification subscriptions. This runs in the background, so you should not need to modify this schedule. |
| `watchedDrive` | `string` | No | Defaults to My Drive. To select a Shared Drive instead, select it from this list. Options are loaded from the connected account. |
| `sheetID` | `string` | Yes | Select a spreadsheet or provide a spreadsheet ID Options are loaded from the connected account. |
| `watchDrive` | `boolean` | No | Set to true to watch the drive for changes. May reduce rate limiting. |
| `worksheetIDs` | `integer[]` | Yes | Select one or more worksheet(s), or provide an array of worksheet IDs. Options are loaded from the connected account. |
| `hasHeaders` | `boolean` | No | Set to true if your spreadsheet contains column headers. When enabled, an additional rowAsObject field will be included in webhook responses with column headers as keys. The original newRow array format is always preserved for backward compatibility. |
| `headerRow` | `integer` | No | The row number containing the column headers (e.g., 1 for the first row). Only used when Has Headers is enabled. |

## Returns

Events emitted by Google Sheets.

## Run it

**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 deployed = await pd.triggers.deploy({
  id: "google_sheets-new-row-added",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    google_sheets: { authProvisionId: "apn_xxxxxxx" },
    timer: { "intervalSeconds": 900 },
    watchedDrive: "Drive",
  },
  webhookUrl: "https://example.com/webhooks/google-sheets",
})

console.log(deployed.id)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/triggers/deploy \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "google_sheets-new-row-added",
    "webhook_url": "https://example.com/webhooks/google-sheets",
    "configured_props": {
      "google_sheets": { "authProvisionId": "apn_xxxxxxx" },
      "timer": { "intervalSeconds": 900 },
      "watchedDrive": "Drive"
    }
  }'
```

**MCP**

MCP servers expose Google Sheets actions as on-demand tools.

New Row Added (Instant) is an event source, so your application deploys it with the Connect SDK or API and then either receives each event at a webhook URL or retrieves events on demand with the trigger events API.

## Event delivery

Every event is sent to the HTTP endpoint you choose when you deploy the source. Or: no webhook required — your app or agent can fetch recent events from the [trigger events API](https://pipedream.com/docs/connect/api-reference/list-trigger-events.md) instead.

---

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