> ## Documentation Index
> Fetch the complete documentation index at: https://www.integrate.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ETL: Google Sheets Source

> Configure the Google Sheets source component in Integrate.io ETL to read spreadsheet data with OAuth authentication, sheet selection, and cell range options.

Use the **Google Sheets source component** to read data from a Google Sheets spreadsheet and ingest it into your Integrate.io ETL pipeline.

## Connection Setup

Integrate.io ETL supports two ways to connect to Google Sheets: a Google Cloud **service account** (recommended for team or workspace-owned spreadsheets), or user-based **OAuth**.

### Service Account (recommended)

Use a service account when you want to avoid user-based OAuth, share access across a team, or connect spreadsheets owned by a workspace rather than an individual user.

#### Step 1: Create a service account and JSON key

<Steps>
  <Step>
    Access your [Google Cloud Console](https://console.cloud.google.com/) and select the project you want to use.
  </Step>

  <Step>
    On the sidebar, choose **IAM & Admin → Service Accounts → Create Service Account**.
  </Step>

  <Step>
    Fill in the **Service account name** (for example, `integrateio-google-sheets`) and click **Done**. Roles are not required at the project level for Google Sheets; access is granted per spreadsheet in Step 3.
  </Step>

  <Step>
    From the **Service Accounts** list, click the service account you just created and open the **Keys** tab.
  </Step>

  <Step>
    Click **Add Key → Create new key**, choose **JSON**, and click **Create**. A `.json` key file is downloaded to your machine. Keep this file secure. You will upload it to Integrate.io in Step 4.
  </Step>

  <Step>
    Copy the service account's email address (it ends in `@<project-id>.iam.gserviceaccount.com`). You will need it in Step 3.
  </Step>
</Steps>

#### Step 2: Enable the Google Sheets API

<Steps>
  <Step>
    In the Google Cloud Console, go to **APIs & Services → Library**.
  </Step>

  <Step>
    Search for **Google Sheets API** and click **Enable**. If you plan to let Integrate.io list spreadsheets by name, also enable the **Google Drive API**.
  </Step>
</Steps>

#### Step 3: Share your spreadsheets with the service account

The service account can only access spreadsheets that have been explicitly shared with it.

<Steps>
  <Step>
    Open the Google Sheets spreadsheet you want to connect to.
  </Step>

  <Step>
    Click **Share** in the top-right corner.
  </Step>

  <Step>
    Paste the service account's email address into the sharing field.
  </Step>

  <Step>
    Choose the access level:

    * **Viewer**, for source components that only read data.
    * **Editor**, for destination components that write data.
  </Step>

  <Step>
    Uncheck **Notify people** and click **Share**.
  </Step>
</Steps>

Repeat this step for every spreadsheet that should be available to Integrate.io.

#### Step 4: Create the connection in Integrate.io ETL

<Steps>
  <Step>
    Click the **Connections** icon (lightning bolt) in the top-left menu.
  </Step>

  <Step>
    Click **New connection**.
  </Step>

  <Step>
    Select **Google Sheets (Service Account)**.
  </Step>

  <Step>
    Name the connection and upload the JSON key file you downloaded in Step 1. The service account email is filled in automatically from the key file.
  </Step>

  <Step>
    Click **Test Connection** to verify the credentials, then click **Create connection**.
  </Step>
</Steps>

### OAuth

To connect with a personal or user-based Google account instead of a service account:

<Steps>
  <Step>
    Click the **Connections** icon (lightning bolt) on the top-left menu, then click **New connection**.
  </Step>

  <Step>
    Select **Google Sheets**.
  </Step>

  <Step>
    Click **Authenticate** and, if required, sign in to Google.
  </Step>

  <Step>
    Click **Connect** to authorize Integrate.io ETL access to your Google Sheets account.
  </Step>

  <Step>
    Name the connection and click **Create Google Sheets connection**.
  </Step>
</Steps>

<Tip>Reconnect a connection if your password changes or the token expires. To delete a connection, click the three vertical dots on the far right of the connection listing and select **Delete connection**.</Tip>

## Source Properties

The source component is configured in **Step 02** of the component editor.

<Frame>
  <img src="https://mintcdn.com/integrateio/vPmzup7uAj66abcx/images/creating-packages/using-components-google-sheets-source/image-1.webp?fit=max&auto=format&n=vPmzup7uAj66abcx&q=85&s=ffcf968da023351be1d9cf90f91ee734" alt="Google Sheets source component configuration" width="1200" height="756" data-path="images/creating-packages/using-components-google-sheets-source/image-1.webp" />
</Frame>

### Spreadsheet

Select the spreadsheet to read from. The dropdown lists all spreadsheets that have been shared with the service account. Use the search field to filter by name. If your spreadsheet is not listed, make sure it has been shared with the service account's email address. See **Step 3** under Connection Setup above.

Click the **Refresh** button to reload the spreadsheet list if you have recently shared a new spreadsheet.

### Sheet

Select the sheet (tab) within the spreadsheet to read from. The dropdown is populated automatically after a spreadsheet is selected.

## Schema

After configuring the source properties, the **Schema** section (**Step 03**) displays the fields available in the pipeline. These are derived from the header row (row 1) of the selected sheet.

* The first row of the sheet is treated as the header row and defines the column names.
* Data types are automatically inferred from sample data rows. Supported types include: `string`, `long`, `double`, `boolean`, and `datetime`.
* If a column contains mixed types or cannot be inferred, it defaults to `string`.

**The sheet must have a header row.** Sheets without headers will produce unnamed columns (e.g. `column_0`, `column_1`)

## Related

<CardGroup cols={2}>
  <Card title="Google Sheets Destination" icon="arrow-right" href="/docs/etl/using-components-google-sheets-destination" horizontal />
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.