fix: API Key Google Sheets (remplace service account) + signatures routes GET

This commit is contained in:
2026-06-08 22:52:40 +02:00
parent abf5210de6
commit e04e286111
3 changed files with 20 additions and 21 deletions
+14 -19
View File
@@ -37,33 +37,28 @@ export function parseSheetRows(rows: string[][]): SyncProduct[] {
}
/**
* Lit tous les produits depuis Google Sheets via l'API v4.
* Utilise un service account (GOOGLE_SERVICE_ACCOUNT_EMAIL + GOOGLE_PRIVATE_KEY).
* Lit tous les produits depuis Google Sheets via l'API v4 (API Key publique).
* Le fichier Sheets doit être partagé en lecture ("Toute personne avec le lien").
*/
export async function readSheetProducts(): Promise<SyncProduct[]> {
const email = process.env.GOOGLE_SERVICE_ACCOUNT_EMAIL
const key = process.env.GOOGLE_PRIVATE_KEY?.replace(/\\n/g, '\n')
const apiKey = process.env.GOOGLE_API_KEY
const sheetId = process.env.GOOGLE_SHEETS_ID
const sheetName = process.env.GOOGLE_SHEETS_TAB ?? 'Produits'
if (!email || !key || !sheetId) {
throw new Error('Variables GOOGLE_SERVICE_ACCOUNT_EMAIL, GOOGLE_PRIVATE_KEY et GOOGLE_SHEETS_ID requises')
if (!apiKey || !sheetId) {
throw new Error('Variables GOOGLE_API_KEY et GOOGLE_SHEETS_ID requises')
}
const { google } = await import('googleapis')
const range = encodeURIComponent(`${sheetName}!A2:F`)
const url = `https://sheets.googleapis.com/v4/spreadsheets/${sheetId}/values/${range}?key=${apiKey}`
const auth = new google.auth.GoogleAuth({
credentials: { client_email: email, private_key: key },
scopes: ['https://www.googleapis.com/auth/spreadsheets.readonly'],
})
const res = await fetch(url)
if (!res.ok) {
const err = await res.text()
throw new Error(`Google Sheets API error: ${res.status}${err}`)
}
const sheets = google.sheets({ version: API_VERSION, auth })
const response = await sheets.spreadsheets.values.get({
spreadsheetId: sheetId,
range: `${sheetName}!A2:F`, // A2 = skip header row
})
const rows = (response.data.values ?? []) as string[][]
const data = await res.json()
const rows = (data.values ?? []) as string[][]
return parseSheetRows(rows)
}