# List Files — Google Drive

> List files from a specific folder. Set Max Results to cap how many files are returned per run, then pass the returned nextPageToken back in as Page Token on the next run to page through a large folder in fixed-size batches. See the…

- Key: `google_drive-list-files`
- Type: Action (Read-only)
- Version: 1.0.6
- App: Google Drive (`google_drive`) — https://pipedream.com/apps/google-drive.md
- This page (HTML): https://pipedream.com/apps/google-drive/actions/list-files
- Hints: read-only · open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/google_drive/actions/list-files/list-files.mjs

## Description

List files from a specific folder. Set `Max Results` to cap how many files are returned per run, then pass the returned `nextPageToken` back in as `Page Token` on the next run to page through a large folder in fixed-size batches. [See the documentation](https://developers.google.com/drive/api/v3/reference/files/list) for more information

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `limitToMyDrive` | `boolean` | No | When enabled, results are limited to My Drive. Shared drives and team drives are excluded. Note: files directly shared with you by another user ('Shared with me') will still appear. |
| `drive` | `string` | No | 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. Options are loaded from the connected account. |
| `folderId` | `string` | No | The ID of the parent folder which contains the file. If not specified, it will list files from the drive's top-level folder. Options are loaded from the connected account. |
| `fields` | `string` | No | The fields you want included in the response (see the documentation for available fields). If not specified, the response includes a default set of fields specific to this method. For development you can use the special value * to return all fields, but you'll achieve greater performance by only selecting the fields you need. Important: when supplying a custom mask scoped to files(...), the top-level nextPageToken field must also be present (e.g. nextPageToken,files(id,name)) or pagination silently stops after the first page. This action automatically prepends nextPageToken to your mask when it is absent so all pages are returned. eg: files(id,mimeType,name,createdTime,modifiedTime) |
| `filterText` | `string` | No | Filter by file name that contains a specific text |
| `filterType` | `string` | No | Whether to return files with names containing the Filter Text or files with names that match the Filter Text exactly. Defaults to "CONTAINS". Not relevant unless Filter Text is entered. |
| `trashed` | `boolean` | No | If true, list only trashed files. If false, list only non-trashed files. Keep it empty to include both. |
| `maxResults` | `integer` | No | The maximum number of files to return per run. Leave empty to return every file in the folder. Combine with Page Token to page through a large folder in fixed-size batches across multiple runs. Example: 25. |
| `pageToken` | `string` | No | A cursor for resuming a previous run. Pass the nextPageToken returned by an earlier run to continue listing from where it stopped instead of starting over. Leave empty to start from the beginning of the folder. Example: ~!!~AI9FV7Q.... |

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

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_drive-list-files",
  arguments: {
    limitToMyDrive: true,
    drive: "Drive",
  },
})
```

**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_drive-list-files",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    google_drive: { authProvisionId: "apn_xxxxxxx" },
    limitToMyDrive: true,
    drive: "Drive",
  },
})

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_drive-list-files",
    "configured_props": {
      "google_drive": { "authProvisionId": "apn_xxxxxxx" },
      "limitToMyDrive": true,
      "drive": "Drive"
    }
  }'
```

---

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