Google Sheets Import & Export (Reliable)
Pricing
$0.50 / 1,000 row writtens
Go to Apify Store
Google Sheets Import & Export (Reliable)
Pricing
$0.50 / 1,000 row writtens
You can access the Google Sheets Import & Export (Reliable) programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "1.0", "x-build-id": "A5KmhRhHBGmwkTro9" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/ensorcelling_melilot~google-sheets-sync/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-ensorcelling_melilot-google-sheets-sync", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } }, "/acts/ensorcelling_melilot~google-sheets-sync/runs": { "post": { "operationId": "runs-sync-ensorcelling_melilot-google-sheets-sync", "x-openai-isConsequential": false, "summary": "Executes an Actor and returns information about the initiated run in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/runsResponseSchema" } } } } } } }, "/acts/ensorcelling_melilot~google-sheets-sync/run-sync": { "post": { "operationId": "run-sync-ensorcelling_melilot-google-sheets-sync", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "inputSchema": { "type": "object", "required": [ "spreadsheetId" ], "properties": { "spreadsheetId": { "title": "Spreadsheet URL or ID", "type": "string", "description": "Paste the full Google Sheets URL or just its ID." }, "serviceAccountKey": { "title": "Google service account key (JSON)", "type": "string", "description": "Paste the whole JSON key file of a Google service account, then share your spreadsheet with that account's email as Editor. 2-minute setup in the README. Not needed to import a sheet shared as \"Anyone with the link can view\"." }, "mode": { "title": "Mode", "enum": [ "export", "import" ], "type": "string", "description": "Export writes data into the sheet. Import reads the sheet into this run's dataset.", "default": "export" }, "sheetName": { "title": "Sheet (tab) name", "type": "string", "description": "Created automatically if it doesn't exist.", "default": "Sheet1" }, "writeMode": { "title": "Write mode", "enum": [ "append", "replace", "upsert" ], "type": "string", "description": "Append adds rows below existing data. Replace clears the tab first. Upsert updates rows whose key already exists and adds the rest.", "default": "append" }, "keyColumn": { "title": "Key column (upsert)", "type": "string", "description": "Column that uniquely identifies a row, e.g. url or id." }, "datasetId": { "title": "Dataset ID", "type": "string", "description": "Dataset to export. When you add this Actor as an integration after another Actor, set this to {{resource.defaultDatasetId}}." }, "rawData": { "title": "Raw data (JSON array)", "type": "array", "description": "Alternatively, paste an array of objects to export." }, "fields": { "title": "Only these fields", "type": "array", "description": "Export only these top-level fields, in this order. Leave empty for all.", "items": { "type": "string" } }, "flattenData": { "title": "Flatten nested data", "type": "boolean", "description": "Turn nested objects into columns like address/city. If off, nested values are written as JSON text.", "default": true }, "delimiter": { "title": "Flatten delimiter", "type": "string", "description": "Separator used in flattened column names, e.g. address/city.", "default": "/" }, "valueInputOption": { "title": "How Google reads values", "enum": [ "RAW", "USER_ENTERED" ], "type": "string", "description": "Raw keeps values exactly as they are (recommended; no surprise date or number conversions). User entered makes Google parse them like typed input, including formulas.", "default": "RAW" }, "maxRows": { "title": "Max rows", "minimum": 1, "type": "integer", "description": "Stop after this many rows. Leave empty for no limit." } } }, "runsResponseSchema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "id": { "type": "string" }, "actId": { "type": "string" }, "userId": { "type": "string" }, "startedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "finishedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "status": { "type": "string", "example": "READY" }, "meta": { "type": "object", "properties": { "origin": { "type": "string", "example": "API" }, "userAgent": { "type": "string" } } }, "stats": { "type": "object", "properties": { "inputBodyLen": { "type": "integer", "example": 2000 }, "rebootCount": { "type": "integer", "example": 0 }, "restartCount": { "type": "integer", "example": 0 }, "resurrectCount": { "type": "integer", "example": 0 }, "computeUnits": { "type": "integer", "example": 0 } } }, "options": { "type": "object", "properties": { "build": { "type": "string", "example": "latest" }, "timeoutSecs": { "type": "integer", "example": 300 }, "memoryMbytes": { "type": "integer", "example": 1024 }, "diskMbytes": { "type": "integer", "example": 2048 } } }, "buildId": { "type": "string" }, "defaultKeyValueStoreId": { "type": "string" }, "defaultDatasetId": { "type": "string" }, "defaultRequestQueueId": { "type": "string" }, "buildNumber": { "type": "string", "example": "1.0.0" }, "containerUrl": { "type": "string" }, "usage": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "integer", "example": 1 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 }, "PROXY_UNBLOCKER_UNITS": { "type": "integer", "example": 0 } } }, "usageTotalUsd": { "type": "number", "example": 0.00005 }, "usageUsd": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "number", "example": 0.00005 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 }, "PROXY_UNBLOCKER_UNITS": { "type": "integer", "example": 0 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for Google Sheets Import & Export (Reliable) from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: