google_sheet_web_adapter
TypeScript icon, indicating that this package has built-in type declarations

0.1.5 • Public • Published

Installation

Package can be added using yarn:

pnpm add google_sheet_web_adapter

Usage

  1. Go to Google Cloud Console to get API key for Google Sheets API.
  2. Create a Google Sheet and add some data. See example sheet.
  3. Share it with "Anyone with this link can view".
  4. Get sheet id from url of the sheet.
https://docs.google.com/spreadsheets/d/[THIS-IS-THE-SHEET-ID]/
  1. I suggest adding API key and sheet id to .env file

Examples

Get data from all sheets inside the spreadsheet

import useGoogleSheets from 'google_sheet_web_adapter';

const App = () => {
  const { data, loading, error } = useGoogleSheets({
    apiKey: process.env.REACT_APP_GOOGLE_API_KEY,
    sheetId: process.env.REACT_APP_GOOGLE_SHEETS_ID,
  });

  if (loading) {
    return <div>Loading...</div>;
  }

  if (error) {
    return <div>Error!</div>;
  }

  return <div>{JSON.stringify(data)}</div>;
};

Get data from specific sheets inside the spreadsheet

Don't use single quotes on sheet names, they will be removed because when using space in sheet name it will be returned wrapped with single quotes and plugin will remove them for clean string id.

import useGoogleSheets from 'google_sheet_web_adapter';

const App = () => {
  const { data, loading, error } = useGoogleSheets({
    apiKey: process.env.REACT_APP_GOOGLE_API_KEY,
    sheetId: process.env.REACT_APP_GOOGLE_SHEETS_ID,
    sheetsOptions: [{ id: 'Sheet1' }],
  });

  if (loading) {
    return <div>Loading...</div>;
  }

  if (error) {
    return <div>Error!</div>;
  }

  return <div>{JSON.stringify(data)}</div>;
};

Refetch data from all sheets inside the spreadsheet

import useGoogleSheets from 'google_sheet_web_adapter';

const App = () => {
  const { data, loading, error, refetch } = useGoogleSheets({
    apiKey: process.env.REACT_APP_GOOGLE_API_KEY,
    sheetId: process.env.REACT_APP_GOOGLE_SHEETS_ID,
  });

  if (loading) {
    return <div>Loading...</div>;
  }

  if (error) {
    return <div>Error!</div>;
  }

  return (
    <div>
      <div>{JSON.stringify(data)}</div>

      <button onClick={refetch}>Refetch</button>
    </div>
  );
};

API Documentation

The useGoogleSheets hook takes an object with three properties:

Name Value
apiKey string
sheetId string
sheetsOptions array
  • apiKey is a Google Sheets API v4 key from Google Cloud Console.
  • sheetId is the id of the sheet.
  • sheetsOptions is an array of specific objects { id, headerRowIndex }. Can be left out then it will fallback to all sheets inside the spreadsheet and use first row from sheet as header.

Exposed Data

The hook produces an HookState object:

const { data, loading, error, refetch, called } = useGoogleSheets({
  apiKey,
  sheetId,
});
Name Value
data array
loading boolean
error null or object
refetch function
called boolean
  • data is an object of mapped data objects.
{
    title: 'Test Spreadsheet'
    sheets: [
  {
    id: 'Sheet1',
    data: [
      { key: 'language', value: 'et' },
      { key: 'title', value: 'Test sheet' },
    ],
  },
]
}
  • loading lets you know whether data is being fetched and mapped.
  • error lets you know when there is something wrong. It returns an error object where you can get specific error properties from error.response
{
  status: '404',
  statusText: '',
  url: 'https://sheets.googleapis.com/v4/spreadsheets/...',
}

Readme

Keywords

none

Package Sidebar

Install

npm i google_sheet_web_adapter

Weekly Downloads

1

Version

0.1.5

License

MIT

Unpacked Size

109 kB

Total Files

16

Last publish

Collaborators

  • riverray