Autre point important : si tu veux accéder à un tableur Google Sheets avec une simple API key, alors il faut que ce document soit public, c’est-à-dire un tableur que tout le monde peut lire et modifier sans autorisation particulière (pour autant que l’on connaisse son identifiant).
Si tu veux garder ton tableur privé, alors il faudra authentifier tes requêtes avec OAuth ou un service account, auquel cas il faudra stocker les credentials quelque part. Tu parles de développer une "application JS locale", qu’est-ce que ça signifie exactement ? Si cela veut dire que tu ne vas pas partager ou déployer ta page web sur Internet, tu peux inclure les credentials directement dans la page web sans trop de souci. En revanche, si tu partages ta page web, il faudrait éviter qu’elle contienne ces credentials, sans quoi n’importe qui pourra les utiliser pour modifier librement ton tableur (et c’est là que Node.js devient utile).
Il y a quelques temps, j’ai moi-même utilisé un tableur en guise de simple base de données. Pour ce faire, j’ai créé un projet sur GCP dans lequel j’ai activé l’API de Google Sheets. J’y ai ensuite créé un service account avec qui j’ai partagé le tableur.
Voici le code qui s’occupe d’insérer une nouvelle ligne (ici avec Node.js, j’imagine qu’avec gapi ça doit être assez semblable), j’espère que ça peut t’aider :
import { google } from "googleapis"
const auth = new google.auth.GoogleAuth({
credentials: {
private_key: Buffer.from(process.env.PRIVATE_KEY, "base64").toString(),
client_email: process.env.CLIENT_EMAIL,
},
scopes: ["https://www.googleapis.com/auth/spreadsheets"],
})
const sheets = google.sheets({ version: "v4", auth })
await sheets.spreadsheets.values.append({
spreadsheetId: process.env.SHEET_ID,
range: "Sheet1",
valueInputOption: "USER_ENTERED",
resource: {
majorDimension: "ROWS",
values: [[new Date(), "foo", "bar", 123]],
},
})