# Attio Export to Google Sheets Source: https://neondeerdata.com/docs/integrations/attio-export-to-google-sheets/ Export Attio records, list entries and workspace members to Google Sheets on a schedule. The export runs in your Google Apps Script project. This is an Apps Script installation, not an Attio app or hosted connector. The script and export configuration are supplied for your selected Attio data. ## Requirements [Request the script](https://neondeerdata.com/contact-us/) for your export, then prepare an Attio single-workspace API key, a destination Google Sheet and a Google account that will own the Apps Script project and scheduled trigger. ## Setup 1. **Choose the export** Confirm which Attio objects, lists and workspace members belong in each Sheet tab. 2. **Create an Attio API key** In Attio Workspace settings, open Developers and generate a single-workspace API key. 3. **Create the Apps Script project** Create the project in the Google account that will own the export and paste the supplied script. 4. **Store the API key** In Project Settings ยป Script Properties, set ATTIO_API_KEY to the Attio key. 5. **Set the destination Sheet** Create the Sheet and add its Sheet ID to the script. 6. **Configure export tabs** Set target, object_name and sheet_name for each WRITER_OBJECT entry. 7. **Test and schedule** Run the script once, check the output, then install a time-based trigger. Google's [Apps Script authorization guide](https://developers.google.com/apps-script/guides/services/authorization) explains the permissions requested on the first run. ## Configuration | Setting | Configuration | | ----------------- | ----------------------------------------------------------------------------- | | Export tabs | One `WRITER_OBJECT` entry per Attio source and destination tab. | | Objects | Standard or custom objects to export, identified by slug or UUID. | | Lists | Lists to export, identified by slug or UUID. | | Workspace members | Whether to export the workspace roster to a tab. | | Schedule | Time-based trigger interval, usually hourly or daily. | | Fields and dates | Excluded attributes, multiselect formatting and `DATE_FORMAT` for timestamps. | | Trigger owner | The Google account under which scheduled runs execute. | ## Export behavior ### Schedule and ownership Each run reads the configured Attio data and writes it to the selected tabs. The trigger runs under the Google account that created it. ### Data sources Exports can include standard and custom objects, list entries and workspace members. Objects and lists are read in pages. ### Spreadsheet columns Nested attribute values become separate columns. For example, `location__locality` holds the city or locality and `email__email_address` holds the email. Multiselect values are joined into a single cell. ### Refresh behavior Each `WRITER_OBJECT` entry writes one tab. Tabs can be cleared before writing the latest export. Keep manually maintained data outside tabs configured to be replaced. ## Limitations - Refreshes run on a schedule. There is no live webhook sync or write-back from Sheets to Attio. - Google Apps Script limits each execution to six minutes. Large exports may need separate jobs or smaller data sets. See [Apps Script quotas](https://developers.google.com/apps-script/guides/services/quotas). - The schedule depends on the trigger owner retaining access. - Script Properties keep the API key out of the source, but project editors can still read it by running code. Give edit access only to trusted collaborators. ## Troubleshooting ### The scheduled export stopped Check the trigger owner's access to the Apps Script project and destination Sheet. Installable triggers run as that account. ### The export exceeds the execution limit Reduce the data covered by each run or split the export into multiple scheduled scripts. ## Useful links - [Google Sheets](https://workspace.google.com/products/sheets/) - [Google Sheets help](https://support.google.com/docs/topic/9054603) - [Google Apps Script documentation](https://developers.google.com/apps-script/)