From b96e23dac90cfe7e5429fc44a07f2e6a3080c115 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Thu, 17 Oct 2024 16:13:29 +0530 Subject: [PATCH] feat: get gsheet files --- server/src/routes/auth.ts | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/server/src/routes/auth.ts b/server/src/routes/auth.ts index ec62404f..d6027831 100644 --- a/server/src/routes/auth.ts +++ b/server/src/routes/auth.ts @@ -297,3 +297,42 @@ router.post('/gsheets/data', requireSignIn, async (req, res) => { res.status(500).json({ message: `Error accessing Google Sheets: ${error.message}` }); } }); + +// Step 4: Get user's Google Sheets files (new route) +router.get('/gsheets/files', requireSignIn, async (req, res) => { + try { + const user = await User.findOne({ where: { id: req.user.id } }); + + if (!user) { + return res.status(400).json({ message: 'User not found' }); + } + + const robotId = req.query.robotId; + const robot = await Robot.findOne({ where: { 'recording_meta.id': robotId } }); + + if (!robot) { + return res.status(400).json({ message: 'Robot not found' }); + } + + oauth2Client.setCredentials({ + access_token: robot.google_access_token, + refresh_token: robot.google_refresh_token, + }); + + // List user's Google Sheets files from their Google Drive + const drive = google.drive({ version: 'v3', auth: oauth2Client }); + const response = await drive.files.list({ + q: "mimeType='application/vnd.google-apps.spreadsheet'", + fields: 'files(id, name)', + }); + + const files = response.data.files || []; + if (files.length === 0) { + return res.status(404).json({ message: 'No spreadsheets found.' }); + } + + res.json(files); + } catch (error: any) { + res.status(500).json({ message: `Error retrieving Google Sheets files: ${error.message}` }); + } +}); \ No newline at end of file