am stuck with a problem, can anyone tell me how can I write file from google sheet using next JS , read operation is performed fine, I facing problem in write Operation, Please tell me what should I do? If you have any query please free feel to ask any time
sheet.js
import { google } from 'googleapis';
export async function getDataFromSheets() {
try {
const target = ['https://www.googleapis.com/auth/spreadsheets.readonly'];
const jwt = new google.auth.JWT(
process.env.GOOGLE_SHEETS_CLIENT_EMAIL,
null,
(process.env.GOOGLE_SHEETS_PRIVATE_KEY || '').replace(/\\n/g, '\n'),
target
);
const sheets = google.sheets({ version: 'v4', auth: jwt });
const response = await sheets.spreadsheets.values.get({
spreadsheetId: process.env.SPREADSHEET_ID,
range: 'sheet'
});
const rows = response.data.values;
if (rows.length) {
return rows.map((row) => ({
title: row[0],
description: row[1],
}));
}
} catch (err) {
console.log(err);
}
return [];
}
index.js
This is my index.js file here you have to write your output display code
import Head from 'next/head'
import Image from 'next/image'
import styles from '../styles/Home.module.css'
import { getDataFromSheets } from './libs/sheets'
export default function Home({ data }) {
return (
<div className={styles.container}>
<Head>
<title>Nextsheet ๐ฉ</title>
<meta
name="description"
content="Connecting NextJS with Google Spreadsheets as Database"
/>
<link rel="icon" href="/favicon.ico" />
</Head>
<main>
<h1>Welcome to Nextsheet ๐ฉ</h1>
<p>Connecting NextJS with Google Spreadsheets as Database</p>
<ul>
{data && data.length ? (
data.map((item) => (
<li key={item}>
{item.title} - {item.description}
</li>
))
) : (
<li>Error: do not forget to setup your env variables ๐</li>
)}
</ul>
</main>
</div>
)
}
export async function getStaticProps(context) {
const sheet = await getDataFromSheets();
return {
props: {
data: sheet.slice(0, sheet.length), // remove sheet header
},
revalidate: 1, // In seconds
};
}