feat: route to write to sheet
This commit is contained in:
@@ -2,6 +2,9 @@ import { Router } from 'express';
|
|||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import logger from "../logger";
|
import logger from "../logger";
|
||||||
|
import { writeDataToSheet } from "../workflow-management/integrations/gsheet"
|
||||||
|
import { readFile } from "../workflow-management/storage";
|
||||||
|
|
||||||
|
|
||||||
export const router = Router();
|
export const router = Router();
|
||||||
|
|
||||||
@@ -49,3 +52,35 @@ router.post('/upload-credentials', async (req, res) => {
|
|||||||
return res.status(500).json({ message: 'Failed to save credentials.', error: error.message });
|
return res.status(500).json({ message: 'Failed to save credentials.', error: error.message });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
router.post('/update-google-sheet/:fileName/:runId', async (req, res) => {
|
||||||
|
try {
|
||||||
|
const run = await readFile(`./../storage/runs/${req.params.fileName}_${req.params.runId}.json`);
|
||||||
|
const parsedRun = JSON.parse(run);
|
||||||
|
|
||||||
|
if (parsedRun.status === 'success' && parsedRun.serializableOutput) {
|
||||||
|
const data = parsedRun.serializableOutput as { [key: string]: any }[];
|
||||||
|
const integrationConfig = await loadIntegrations();
|
||||||
|
|
||||||
|
if (integrationConfig) {
|
||||||
|
const { spreadsheetId, sheetName, credentials } = integrationConfig;
|
||||||
|
|
||||||
|
if (spreadsheetId && sheetName && credentials) {
|
||||||
|
// Convert data to Google Sheets format (headers and rows)
|
||||||
|
const headers = Object.keys(data[0]);
|
||||||
|
const rows = data.map((row: { [key: string]: any }) => Object.values(row));
|
||||||
|
const outputData = [headers, ...rows]; // Include headers
|
||||||
|
|
||||||
|
await writeDataToSheet(spreadsheetId, sheetName, outputData);
|
||||||
|
logger.log('info', `Data written to Google Sheet successfully for ${req.params.fileName}_${req.params.runId}`);
|
||||||
|
return res.send({ success: true, message: 'Data updated in Google Sheet' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res.status(400).send({ success: false, message: 'Google Sheet integration not configured' });
|
||||||
|
}
|
||||||
|
return res.status(400).send({ success: false, message: 'Run not successful or no data to update' });
|
||||||
|
} catch (error) {
|
||||||
|
logger.log('error', `Failed to write data to Google Sheet for ${req.params.fileName}_${req.params.runId}: ${error.message}`);
|
||||||
|
return res.status(500).send({ success: false, message: 'Failed to update Google Sheet', error: error.message });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user