Google Sheets ACTION
Upsert Row
Upsert a row of data in a Google Sheet. See the documentation
- Action
- Writes data
- Destructive
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Google Sheets account once, then configure and run Upsert Row from your backend or agent.
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_sheets-upsert-row",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
google_sheets: { authProvisionId: "apn_xxxxxxx" },
drive: "Drive",
sheetId: "Spreadsheet ID",
},
})
console.log(result)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_sheets-upsert-row",
"configured_props": {
"google_sheets": { "authProvisionId": "apn_xxxxxxx" },
"drive": "Drive",
"sheetId": "Spreadsheet ID"
}
}'// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{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_sheets",
},
},
},
)
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_sheets-upsert-row",
arguments: {
drive: "Drive",
sheetId: "Spreadsheet ID",
},
})SCHEMA
Inputs
Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.
| Property | Type | Description |
|---|---|---|
drive Drive | string | Select a specific drive to search. Defaults to All Drives (My Drive and all Shared Drives you have access to) when no selection is made. To limit to your personal drive or a Shared Drive, select it from this list. Optional Dynamic |
sheetId Spreadsheet ID | string | Select a spreadsheet or provide a spreadsheet ID Required Dynamic |
worksheetId Worksheet ID | integer | Select a worksheet or provide a worksheet ID Required Dynamic |
insert Insert - Cells / Column Values | string[] | Insert statement: the row data you want to add to the Google sheet if the key doesn't exist. If the key does exist and Update is not set, the row will be updated using this array. Enter individual cell values or enter a custom expression to pass an array with each element representing a cell/column value (e.g. {{ [5, "test"] }}). Required |
column Key Column | string | The column of the sheet to lookup (e.g. A). This column functions as the key column for the upsert operation. Required |
value Key Value | string | The value of the key to search for in Key Column. Defaults to the value in Insert's "key" column if left blank. Optional |
updates Update - Column / Values | object | Update statment: if the spreadsheet contains duplicate key Value in some row in the specified Column, individual cells in the first duplicate row will be updated using this object's column-value pairs.<br /> Enter the column name for the key (e.g. B) and the corresponding column value (e.g. test). You may also enter a custom expression and pass a JSON object with key/value pairs representing columns and values (e.g. {{ { A: 5, B: "test" } }}). Optional |
REFERENCE
Tool details
Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.
- Registry key
- google_sheets-upsert-row
- Version
- 0.1.21
- App
- Google Sheets
- Authentication
- OAuth
- Read-only
- No
- Destructive
- Yes
- Open world
- Yes
- Source
- View on GitHub ↗