googlesheets Adaptor developer README.md
Source: https://github.com/OpenFn/adaptors/tree/main/packages/googlesheets
Language Google Sheets
Language Pack for building expressions and operations to make Google Sheets API calls.
Documentation
Configuration
View all the required and optional properties for state.configuration in the
official
configuration-schema
definition.
This adaptor supports two authentication methods: OAuth2 and Service Account.
OAuth2
On app.openfn.org: Click Sign in with Google Sheets in the credential setup form. Authentication is handled for you and no manual token management is needed.
Using the OpenFn CLI locally: Use the gcloud CLI to print a temporary access token and provide it in your configuration:
gcloud auth print-access-token
{
"configuration": {
"access_token": "ya29.A0..."
}
}
Service Account
Service accounts are ideal for server-to-server integrations that run without user interaction. Use a service account when you need reliable, long-running access without managing OAuth2 token refresh.
To create a service account and obtain a JSON key file, follow the
Google Cloud service account documentation.
Your OpenFn credential requires the client_email and private_key fields
from the downloaded JSON key file.
Share the spreadsheet with the service account
A service account does not have access to any spreadsheet by default. You must share each spreadsheet the adaptor needs to access, just like you would share with any other Google user.
- Open the spreadsheet in Google Sheets.
- Click Share (top-right corner).
- Enter the service account's
client_emailaddress. - Grant at least Editor access (or Viewer if read-only is sufficient).
- Click Send.
Note: The service account email looks like
name@project-id.iam.gserviceaccount.com. If you see a "This person may not be a Google user" warning, you can safely ignore it and proceed.
appendValues()
Add rows to an existing sheet:
https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/values/Sheet1!A1:E1:append?valueInputOption=USER_ENTERED
appendValues({
spreadsheetId: '1O-a4_RgPF_p8W3I6b5M9wobA3-CBW8hLClZfUik5sos',
range: 'Sheet1!A1:E1',
values: [
['From expression', '$15', '2', '3/15/2016'],
['Really now!', '$100', '1', '3/20/2016'],
],
});
Development
Clone the adaptors monorepo. Follow the
Getting Started guide inside to get set up.
Run tests using pnpm run test or pnpm run test:watch
Build the project using pnpm build.
To just build the docs run pnpm build docs