ml-connector
Oracle NetSuiteGoogle Sheets

Oracle NetSuite and Google Sheets integration

Oracle NetSuite runs your ERP; Google Sheets runs your operational reporting and analysis. Connecting the two keeps a live feed of transactions and master records flowing from NetSuite into Sheets without manual exports. Purchase orders, vendor bills, customer invoices, and employee records sync to the columns you define, on a schedule tied to your business cycle. Finance teams can build live dashboards, audit trails, and compliance registers directly in Sheets without re-keying.

How Oracle NetSuite works

Oracle NetSuite exposes vendors, purchase orders, vendor bills, customer invoices, inventory items, employees, departments, and accounts through REST APIs (SuiteTalk). The platform authenticates with OAuth 2.0 Client Credentials (M2M) using a certificate, or Token-Based Authentication (legacy). NetSuite supports Event Subscriptions (webhooks) for record changes on supported types such as sales orders and invoices, but webhooks are not available for all entities, so polling via SuiteQL is the standard approach for bulk reads and historical syncs. OAuth tokens are valid for 60 minutes and do not include a refresh token in M2M flows. NetSuite rate limits are enforced per account, and webhook endpoints must return 2xx responses promptly.

How Google Sheets works

Google Sheets exposes spreadsheets as collections of named tabs and cell ranges accessible via the REST API. Data structure is entirely customer-defined--there are no native invoice or purchase-order entities. The API accepts reads and writes via A1 notation ranges or named ranges. Google Sheets authenticates with OAuth 2.0 Authorization Code flow (user-delegated) or a Service Account (server-to-server). Push notifications are available via Google Drive watch channels but have a maximum TTL of 24 hours and require manual re-registration, so polling every 5 to 15 minutes is the recommended approach. Sheets is a general-purpose spreadsheet application and not purpose-built for ERP data.

What moves between them

Data flows from Oracle NetSuite into Google Sheets. ml-connector polls NetSuite for purchase orders, vendor bills, customer invoices, inventory items, and employee records on a schedule you define. Each record is written to the corresponding sheet tab in the columns you map. NetSuite is the source of truth; Google Sheets is read-mostly and serves as a denormalized reporting layer. Mapping is configured once per record type and reused across syncs.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the NetSuite side, it authenticates with OAuth 2.0 Client Credentials using the certificate you provide, refreshes the token before expiry, and polls using SuiteQL to retrieve records in bulk. On the Google Sheets side, it uses either a Service Account or user-delegated OAuth 2.0 to write data to the sheet tabs you specify. ml-connector maps NetSuite fields to your Google Sheets column headers, handles NetSuite rate limits with exponential backoff, and can append new rows or update existing rows based on a key field you choose (such as a NetSuite internal ID). Because Google Sheets is not transactional, a failed write is replayed from the audit log. NetSuite OAuth tokens expire every 60 minutes and are refreshed automatically.

A real-world example

A mid-market wholesale distributor uses Oracle NetSuite for procurement and inventory. The finance team needs daily visibility into open purchase orders and a full audit log of vendor bill receipts for month-end close and cash flow forecasting. Before the integration, they exported CSVs from NetSuite each morning and pasted them into a master Sheets workbook, a process that was error-prone and delayed insights by hours. With NetSuite and Google Sheets connected, purchase orders and vendor bills flow into Sheets every hour. Finance builds pivot tables and charts directly from the live data, month-end close queries run on data that is already reconciled, and the manual export step is eliminated.

What you can do

  • Poll Oracle NetSuite for purchase orders, vendor bills, customer invoices, and inventory items on a schedule you control.
  • Write NetSuite records to Google Sheets with field mapping to your column headers and choice of append or update mode.
  • Authenticate Oracle NetSuite with OAuth 2.0 Client Credentials and Google Sheets with a Service Account or user-delegated OAuth.
  • Handle NetSuite OAuth token refresh, API rate limits, and retries with exponential backoff.
  • Maintain a full audit trail of every sync run and replay failed records from the audit log.

Questions

Which direction does data move between Oracle NetSuite and Google Sheets?
Data flows from Oracle NetSuite into Google Sheets. NetSuite is the system of record for transactions and master data. Google Sheets serves as a denormalized reporting and analysis layer. ml-connector does not write changes from Sheets back into NetSuite.
How does ml-connector decide whether to append or update rows in Google Sheets?
You define a key field during setup, such as the NetSuite internal ID or a purchase order number. On each sync, ml-connector checks whether a row with that key already exists in the sheet. If it exists, the row is updated; if not, a new row is appended. This prevents duplicate records and keeps the sheet in sync with NetSuite.
How often does the integration sync, and what happens if a write to Google Sheets fails?
You set the polling interval when you create the flow, typically every hour or multiple times per day. If a write to Google Sheets fails due to a network error or quota limit, ml-connector logs the failure to the audit trail and retries it on the next scheduled run until it succeeds. You can also replay failed records manually from the audit interface.

Related integrations

Connect Oracle NetSuite and Google Sheets

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started