# Copy Sheet — Smartsheet

> Copy an existing sheet to a new location. Creates a complete duplicate including all rows, columns, formatting, and attachments. Specify a destination workspace or folder, or omit both to copy to the user's home (Sheets folder). Returns…

- Key: `smartsheet-copy-sheet`
- Type: Action (Write)
- Version: 0.1.1
- App: Smartsheet (`smartsheet`) — https://pipedream.com/apps/smartsheet.md
- This page (HTML): https://pipedream.com/apps/smartsheet/actions/copy-sheet
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/smartsheet/actions/copy-sheet/copy-sheet.mjs

## Description

Copy an existing sheet to a new location. Creates a complete duplicate including all rows, columns, formatting, and attachments. Specify a destination workspace or folder, or omit both to copy to the user's home (Sheets folder). Returns the new sheet's ID and permalink. Use **List Sheets** to find the source sheet ID. To move a sheet instead (removing it from the original location), use **Move Sheet**. [See the documentation](https://developers.smartsheet.com/api/smartsheet/openapi/sheets/copy-sheet)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `sheetId` | `string` | Yes | The sheet to act on. Accepts a numeric sheet ID (e.g. 1234567890123456), or a Smartsheet sheet URL, which is resolved to the ID for you. Use List Sheets to enumerate sheets, or Search to find one by name. |
| `newName` | `string` | No | Name for the copied sheet. If omitted, Smartsheet appends 'Copy of' to the original name. |
| `destinationType` | `string` | No | Where to copy the sheet. Defaults to home if omitted, but home has been deprecated since 2025-03-25 and will be removed - pass workspace or folder instead. |
| `destinationId` | `string` | No | The numeric ID of the destination workspace or folder (e.g. 1234567890123456). Required when Destination Type is workspace or folder, and must be omitted for home. Use List Workspace Options for workspace IDs or List Folder Options for folder IDs. |

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

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: "smartsheet-copy-sheet",
  arguments: {
    sheetId: "Sheet ID or URL",
    newName: "New Name",
  },
})
```

**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: "smartsheet-copy-sheet",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    smartsheet: { authProvisionId: "apn_xxxxxxx" },
    sheetId: "Sheet ID or URL",
    newName: "New Name",
  },
})

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": "smartsheet-copy-sheet",
    "configured_props": {
      "smartsheet": { "authProvisionId": "apn_xxxxxxx" },
      "sheetId": "Sheet ID or URL",
      "newName": "New Name"
    }
  }'
```

---

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