Commit f1c18ab2 by Lin Wang

feat: add the googleapis package

parent 805b25ca
No preview for this file type
......@@ -11,6 +11,7 @@
"dependencies": {
"@slack/web-api": "^7.9.3",
"deep-diff": "^1.0.2",
"googleapis": "^150.0.1",
"jsdom": "^26.1.0"
},
"scripts": {
......@@ -27,7 +28,9 @@
"task": "bun run extract && bun run diff",
"task:ai": "bun run extract:ai && bun run diff:ai",
"send-diff": "bun run src/detect_section_selector_masters/sendDiffToSlack.ts",
"send-gsheet": "bun run src/detect_section_selector_masters/sendDiffToGoogleSheets.ts",
"task:slack": "bun run task && bun run send-diff",
"task:slack:ai": "bun run task:ai && bun run send-diff"
"task:slack:ai": "bun run task:ai && bun run send-diff",
"task:gsheet": "bun run task && bun run send-gsheet"
}
}
\ No newline at end of file
// @ts-nocheck
import { google } from 'googleapis';
import { readdirSync, readFileSync } from 'fs';
import { join } from 'path';
async function uploadAllToSheets() {
const spreadsheetId = process.env.GOOGLE_SHEET_ID!;
const keyFile = process.env.GOOGLE_SERVICE_ACCOUNT_KEY_FILE!;
const auth = new google.auth.GoogleAuth({
keyFile,
scopes: ['https://www.googleapis.com/auth/spreadsheets'],
});
const sheets = google.sheets({ version: 'v4', auth });
const dir = join(__dirname, 'diffWithBaseline');
const files = readdirSync(dir).filter(f => f.endsWith('.json'));
// Fetch existing sheet names
const { data: spreadsheet } = await sheets.spreadsheets.get({ spreadsheetId });
const existing = spreadsheet.sheets?.map((s: any) => s.properties?.title || '') || [];
for (const file of files) {
const sheetName = file.replace(/\.json$/, '');
if (!existing.includes(sheetName)) {
// Create new sheet
await sheets.spreadsheets.batchUpdate({
spreadsheetId,
requestBody: {
requests: [{ addSheet: { properties: { title: sheetName } } }]
}
});
}
const raw = readFileSync(join(dir, file), 'utf-8');
const data = JSON.parse(raw);
if (!data.length) continue;
const headers = Object.keys(data[0]);
const rows = data.map((row: any) => headers.map((h: string) => row[h]));
// Clear existing values
await sheets.spreadsheets.values.clear({ spreadsheetId, range: `'${sheetName}'` });
// Write headers and data
await sheets.spreadsheets.values.append({
spreadsheetId,
range: `'${sheetName}'!A1`,
valueInputOption: 'RAW',
requestBody: { values: [headers, ...rows] }
});
console.log(`✅ Uploaded ${file} to tab ${sheetName}`);
}
}
uploadAllToSheets().catch(err => {
console.error('Error uploading to Google Sheets:', err);
process.exit(1);
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment