Google Docs ACTION
Replace Image
Replace an existing inline image in a Google Doc with a different image, keeping its position and size. The replacement URL must be publicly reachable (Google fetches it server-side) and point to a PNG, JPEG, or GIF. Use Find Document to resolve a document's name to its ID, then Get Document to list the document's images - each key of the response's
inlineObjects map is an Image ID. Use Insert Image instead to add a new image rather than swap one out. Works on multi-tab documents: pass a Tab ID, or leave it blank and the tab holding the image is found automatically. See the documentation- Action
- Writes data
- Destructive
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Google Docs account once, then configure and run Replace Image 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_docs-replace-image",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
google_docs: { authProvisionId: "apn_xxxxxxx" },
docId: "Document ID",
imageId: "Image 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_docs-replace-image",
"configured_props": {
"google_docs": { "authProvisionId": "apn_xxxxxxx" },
"docId": "Document ID",
"imageId": "Image 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_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-replace-image",
arguments: {
docId: "Document ID",
imageId: "Image 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 |
|---|---|---|
docId Document ID | string | 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. Required |
imageId Image ID | string | The ID of the inline image to replace. Call Get Document and pass a key from the response's inlineObjects map (e.g. kix.abc123def). Required Dynamic |
imageUri Image URL | string | The URL of the image you want to insert into the doc Required |
tabId Tab ID | string | For a multi-tab document, the tab the image lives in (e.g. t.0). Get tab IDs from List Tabs. Omit to locate the image automatically. Optional Dynamic |
fields Fields | string | Optional Google Docs API field mask limiting which document fields are returned, e.g. documentId,title,revisionId instead of the whole document. Valid top-level fields: documentId, title, body, headers, footers, footnotes, documentStyle, suggestedDocumentStyleChanges, namedStyles, suggestedNamedStylesChanges, revisionId, suggestionsViewMode, commentsViewMode, inlineObjects, lists, positionedObjects, namedRanges, tabs - the underscore spelling of each (e.g. document_id) is accepted too. Nested selections are allowed, e.g. body/content. There is no url field, and an invalid mask fails the call before the document is changed. Cannot be combined with Tab ID. Leave blank to return the full document. 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_docs-replace-image
- Version
- 0.2.1
- App
- Google Docs
- Authentication
- OAuth
- Read-only
- No
- Destructive
- Yes
- Open world
- Yes
- Source
- View on GitHub ↗