# Google Drive Export Integration You can export job results from Treasure Data directly to Google Drive, further analyze, share your data in Google Drive, and uncover critical business insights. View Treasure Boxes for sample workflows to export job results to Google Drive. ## Prerequisites - Basic knowledge of Treasure Data, including the [TD Toolbelt](https://toolbelt.treasuredata.com/). - A Google account (for Google Drive). - Authorized Treasure Data account access. ## Obtain the Folder Key You can obtain the Google Drive folder key from the access URL as follows: ![](/assets/image-20191009-211909.43939ecdd993a1cf7b9c8f3b011f5b9253f7a5aa9fdac8c4732ef3841f45b532.26c56f91.png) ## Static IP Address of Treasure Data Integration If your security policy requires IP whitelisting, you must add Treasure Data's IP addresses to your allowlist to ensure a successful connection. Please find the complete list of static IP addresses, organized by region, at the following link: [https://api-docs.treasuredata.com/en/overview/ip-addresses-integrations-result-workers/](https://api-docs.treasuredata.com/en/overview/ip-addresses-integrations-result-workers/) ## Use the TD Console to Create a Connection ### Create a New Connection You must create and configure the export data connection before running your query. As part of the data connection, you provide authentication to access the integration. 1. Navigate to **Integrations Hub** > **Catalog**. 2. Search and select Google Drive. ![](/assets/screenshot-2025-07-21-at-15.36.56.aab38574db169cde4901492ccd0302ff3d257591be2f00b4a18bb9020c23f5e7.26c56f91.png) 3. The Authentication dialog opens. 4. Authenticate the connection by selecting an existing OAuth connection or creating a new one. ![](/assets/screenshot-2025-07-21-at-15.57.33.b893ebb4ce290ebbe934a207056ec818521d888664ea06c0e72b78117b53694e.26c56f91.png) 5. Select a name for your new Google Drive connection. ### Authenticate an Account Access to Treasure Data Google Drive integration requires OAuth2 authentication. The authentication requires connecting your Treasure Data account to your respective Google account. If you don't have an existing connection, create a new authentication. 1. After opening the authentication dialog, select the link under "Sign in with Google" to create a new connection. 2. Log into your Google Drive account in the popup window and grant access to the Treasure Data app. ![](/assets/image-20191015-140119.6afe6692f82df2f21e05953eaf4c969773d8d50b79259e94ee6ec81666ea41fc.7a2fdaca.png) 3. You are redirected back to the integration dialog pane. Select Google Sheets and then select the new connection from the dropdown menu. ![](/assets/screenshot-2025-07-21-at-15.57.33.b893ebb4ce290ebbe934a207056ec818521d888664ea06c0e72b78117b53694e.69844539.png) ### Define your Query 1. Navigate to Data Workbench > Queries. 2. Select **New Query**. 3. Run the query to validate the result set. ![](/assets/image2021-9-7_15-1-38.a0ef34a3cfb6035eb6a53a758a755062decbb29fac046d1b24440a76d0662c7a.26c56f91.png) ### Configure Export Results in Your Data Connection 1. Navigate to **Data Workbench** > **Queries.** 2. Select an existing query or create a new one**.** 3. In the query editor, select the **Export Results** checkbox. ![](/assets/image-20191016-211654.c01ebf114bc73d11d17c870994e5e9a16952645c80d4f307b2f2ab2eefded596.26c56f91.png) 4. Select your Google Drive connection. 5. The Export Results dialog panel opens. Edit the following parameters. The following table describes the parameters you can configure for Google Drive export: | **Parameters** | **Required?** | **Description** | | --- | --- | --- | | File Name | Yes | Name of the uploaded file. | | Duplication Option | No | One of:- **Allow duplicate (default):** multiple files with same name can co-exist (supported by google api). - **Replace**: existing file will be replaced by new one. - **With datetime suffix**: always add job execution date time as suffix. Format is yyyyMMdd_HHmmss. | | Folder ID | No | Id of parent folder. Drive root folder will be used if empty. | | Create New Folder | No | Default is false. Checked if creating new folder is required. | | New Folder Name | Conditionally required | Required when `Create New Folder` is checked | | Format | No | One of **csv, tsv**. Default is csv. | For csv, tsv formatter and encoder parameters, see  [CSV Formatter & Encoder](/int/google-drive-export-integration#h2_1163212668) ## Create an Activation Using an Integration You can create an activation to export segment data or stages. Review the steps to [Creating an Activation](https://docs.treasuredata.com/smart/project-product-documentation/create-an-activation) in the Product Documentation portal. ## Example Query ```SQL SELECT * FROM [table] ``` ### (Optional) Schedule Query Export Jobs You can use Scheduled Jobs with Result Export to periodically write the output result to a target destination that you specify. Treasure Data's scheduler feature supports periodic query execution to achieve high availability. When two specifications provide conflicting schedule specifications, the specification requesting to execute more often is followed while the other schedule specification is ignored. For example, if the cron schedule is `'0 0 1 * 1'`, then the 'day of month' specification and 'day of week' are discordant because the former specification requires it to run every first day of each month at midnight (00:00), while the latter specification requires it to run every Monday at midnight (00:00). The latter specification is followed. #### Scheduling your Job Using TD Console 1. Navigate to **Data Workbench > Queries** 2. Create a new query or select an existing query. 3. Next to **Schedule**, select None. ![](/assets/image2021-1-15_17-28-51.f1b242f6ecc7666a0097fdf37edd1682786ec11ef80eff68c66f091bc405c371.0f87d8d4.png) 4. In the drop-down, select one of the following schedule options: ![](/assets/image2021-1-15_17-29-47.45289a1c99256f125f4d887e501e204ed61f02223fde0927af5f425a89ace0c0.0f87d8d4.png) | Drop-down Value | Description | | --- | --- | | Custom cron... | Review [Custom cron... details](#custom-cron-details). | | @daily (midnight) | Run once a day at midnight (00:00 am) in the specified time zone. | | @hourly (:00) | Run every hour at 00 minutes. | | None | No schedule. | #### Custom cron... Details ![](/assets/image2021-1-15_17-30-23.0f94a8aa5f75ea03e3fec0c25b0640cd59ee48d1804a83701e5f2372deae466c.0f87d8d4.png) | **Cron Value** | **Description** | | --- | --- | | `0 * * * *` | Run once an hour. | | `0 0 * * *` | Run once a day at midnight. | | `0 0 1 * *` | Run once a month at midnight on the morning of the first day of the month. | | "" | Create a job that has no scheduled run time. | ``` * * * * * - - - - - | | | | | | | | | +----- day of week (0 - 6) (Sunday=0) | | | +---------- month (1 - 12) | | +--------------- day of month (1 - 31) | +-------------------- hour (0 - 23) +------------------------- min (0 - 59) ``` The following named entries can be used: - Day of Week: sun, mon, tue, wed, thu, fri, sat. - Month: jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec. A single space is required between each field. The values for each field can be composed of: | Field Value | Example | Example Description | | --- | --- | --- | | A single value, within the limits displayed above for each field. | | | | A wildcard `'*'` to indicate no restriction based on the field. | `'0 0 1 * *'` | Configures the schedule to run at midnight (00:00) on the first day of each month. | | A range `'2-5'`, indicating the range of accepted values for the field. | `'0 0 1-10 * *'` | Configures the schedule to run at midnight (00:00) on the first 10 days of each month. | | A list of comma-separated values `'2,3,4,5'`, indicating the list of accepted values for the field. | `0 0 1,11,21 * *'` | Configures the schedule to run at midnight (00:00) every 1st, 11th, and 21st day of each month. | | A periodicity indicator `'*/5'` to express how often based on the field's valid range of values a schedule is allowed to run. | `'30 */2 1 * *'` | Configures the schedule to run on the 1st of every month, every 2 hours starting at 00:30. `'0 0 */5 * *'` configures the schedule to run at midnight (00:00) every 5 days starting on the 5th of each month. | | A comma-separated list of any of the above except the `'*'` wildcard is also supported `'2,*/5,8-10'`. | `'0 0 5,*/10,25 * *'` | Configures the schedule to run at midnight (00:00) every 5th, 10th, 20th, and 25th day of each month. | 1. (Optional) You can delay the start time of a query by enabling the Delay execution. ### Execute the Query Save the query with a name and run, or just run the query. Upon successful completion of the query, the query result is automatically exported to the specified destination. Scheduled jobs that continuously fail due to configuration errors may be disabled on the system side after several notifications. (Optional) You can delay the start time of a query by enabling the Delay execution. ## Activate a Segment in Audience Studio You can also send segment data to the target platform by creating an activation in the Audience Studio. 1. Navigate to **Audience Studio**. 2. Select a parent segment. 3. Open the target segment, right-mouse click, and then select **Create Activation.** 4. In the **Details** panel, enter an Activation name and configure the activation according to the previous section on Configuration Parameters. 5. Customize the activation output in the **Output Mapping** panel. ![](/assets/ouput.b2c7f1d909c4f98ed10f5300df858a4b19f71a3b0834df952f5fb24018a5ea78.8ebdf569.png) - Attribute Columns - Select **Export All Columns** to export all columns without making any changes. - Select **+ Add Columns** to add specific columns for the export. The Output Column Name pre-populates with the same Source column name. You can update the Output Column Name. Continue to select **+ Add Columns**to add new columns for your activation output. - String Builder - **+ Add string** to create strings for export. Select from the following values: - String: Choose any value; use text to create a custom value. - Timestamp: The date and time of the export. - Segment Id: The segment ID number. - Segment Name: The segment name. - Audience Id: The parent segment number. 1. Set a **Schedule**. ![](/assets/snippet-output-connector-on-audience-studio-2024-08-28.a99525173709da1eb537f839019fa7876ffae95045154c8f2941b030022f792c.8ebdf569.png) - Select the values to define your schedule and optionally include email notifications. 1. Select **Create**. If you need to create an activation for a batch journey, review [Creating a Batch Journey Activation](/products/customer-data-platform/journey-orchestration/batch/creating-a-batch-journey-activation). ## (Optional) Configure Export Results in Workflow Within Treasure Workflow, you can specify the use of this data connector to export data. Learn more at [Using Workflows to Export Data with the TD Toolbelt](https://docs.treasuredata.com/smart/project-product-documentation/exporting-data-with-parameters). ## (Optional) Export Integration Using the CLI The [TD Toolbelt](https://toolbelt.treasuredata.com/) can trigger exporting the Query Result to Google Drive from the CLI. You need to specify the parameters for the export job using the --result option of the td query command. For more information, refer to [Querying and Importing Data to Treasure Data from the Command Line](https://docs.treasuredata.com/smart/project-product-documentation/querying-and-importing-data-to-treasure-data-from-the-command-line). ```bash td query --database your_database --result configuration query ``` The following table identifies the configuration keys with descriptions. | **Config Key** | **Type** | **Required** | **Description** | | --- | --- | --- | --- | | type | string | yes | Export type: google_drive | | file_name | string | yes | Name of the uploaded file. | | `duplicate_option` | string | yes | One of **allow_duplication, replace, append_datetime** | | `folder_id` | string | No | Id of parent folder. Drive root folder will be used if empty. | | `create_new_folder` | boolean | No | Default is false. Checked if creating new folder is required. | | `new_folder_name` | string | No | Required when `Create New Folder` is checked | | `format` | string | No | One of **csv, tsv**. Default is csv. | | `skip_invalid_records` | boolean | No | If set to true, this will skip invalid records and continue uploading valid ones. If set to false (default), this will terminate the job when an invalid record is encountered. | ### Sample CLI ```bash td query --database [database name] --query '[sql query]' --type presto \ --result '{"type":"google_drive","file_name":"[file name]","client_id":"[oauth client id]","client_secret":"[oauth client secret]","refresh_token":"[oauth refresh token]","folder_id": "[parent folder id]","create_new_folder": true,"new_folder_name": "[new folder name]"}'; ``` ### CSV Formatter & Encoder To configure csv, tsv format, see [https://www.embulk.org/docs/built-in.html#csv-formatter-plugin](https://www.embulk.org/docs/built-in.html#csv-formatter-plugin) To configure encoder, see [Encryptio Encoder for Output Plugin](/int/embulk-encoder-encryption-pgp) ## See Also - [Scheduling Data Connector Job Execution from the CLI](/int/scheduling-a-data-connector-job-execution-from-the-cli)