A React Hook wrapper library for google-sheets-mapper for getting data from Google Sheets API v4
Package can be added using yarn:
yarn add use-google-sheets
Or, use NPM:
npm install use-google-sheets
UMD build available on unpkg.
- Go to Google Cloud Console to get API key for Google Sheets API.
- Create a Google Sheet and add some data. See example sheet.
- Share it with "Anyone with this link can view".
- Get sheet id from url of the sheet.
https://docs.google.com/spreadsheets/d/[THIS-IS-THE-SHEET-ID]/
- I suggest adding API key and sheet id to
.env
file
import useGoogleSheets from 'use-google-sheets';
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>;
};
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 'use-google-sheets';
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>;
};
import useGoogleSheets from 'use-google-sheets';
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>
);
};
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.
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 array of mapped data objects.
[
{
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 fromerror.response
{
status: '404',
statusText: '',
url: 'https://sheets.googleapis.com/v4/spreadsheets/...',
}
- Change
sheetsNames
array of string tosheetsOptions
array of objects with{ id: 'sheetName' }