First stage of the new flow
This commit is contained in:
58
src/lib/sheets.ts
Normal file
58
src/lib/sheets.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
import { google } from 'googleapis';
|
||||
import { getAuthenticatedClient } from './google-server.js';
|
||||
|
||||
export interface GoogleSheet {
|
||||
id: string;
|
||||
name: string;
|
||||
modifiedTime: string;
|
||||
webViewLink: string;
|
||||
}
|
||||
|
||||
export interface SheetData {
|
||||
values: string[][];
|
||||
}
|
||||
|
||||
export async function getRecentSpreadsheets(refreshToken: string, limit: number = 10): Promise<GoogleSheet[]> {
|
||||
const oauth = getAuthenticatedClient(refreshToken);
|
||||
const drive = google.drive({ version: 'v3', auth: oauth });
|
||||
|
||||
const response = await drive.files.list({
|
||||
q: "mimeType='application/vnd.google-apps.spreadsheet'",
|
||||
orderBy: 'modifiedTime desc',
|
||||
pageSize: limit,
|
||||
fields: 'files(id,name,modifiedTime,webViewLink)'
|
||||
});
|
||||
|
||||
return response.data.files?.map(file => ({
|
||||
id: file.id!,
|
||||
name: file.name!,
|
||||
modifiedTime: file.modifiedTime!,
|
||||
webViewLink: file.webViewLink!
|
||||
})) || [];
|
||||
}
|
||||
|
||||
export async function getSpreadsheetData(refreshToken: string, spreadsheetId: string, range: string = 'A1:Z10'): Promise<SheetData> {
|
||||
const oauth = getAuthenticatedClient(refreshToken);
|
||||
const sheets = google.sheets({ version: 'v4', auth: oauth });
|
||||
|
||||
const response = await sheets.spreadsheets.values.get({
|
||||
spreadsheetId,
|
||||
range
|
||||
});
|
||||
|
||||
return {
|
||||
values: response.data.values || []
|
||||
};
|
||||
}
|
||||
|
||||
export async function getSpreadsheetInfo(refreshToken: string, spreadsheetId: string) {
|
||||
const oauth = getAuthenticatedClient(refreshToken);
|
||||
const sheets = google.sheets({ version: 'v4', auth: oauth });
|
||||
|
||||
const response = await sheets.spreadsheets.get({
|
||||
spreadsheetId,
|
||||
fields: 'properties.title,sheets.properties(title,sheetId)'
|
||||
});
|
||||
|
||||
return response.data;
|
||||
}
|
||||
Reference in New Issue
Block a user