feat(temp): standalone gsheet update fxn
This commit is contained in:
@@ -79,8 +79,40 @@ router.post('/update-google-sheet/:fileName/:runId', async (req, res) => {
|
|||||||
return res.status(400).send({ success: false, message: 'Google Sheet integration not configured' });
|
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' });
|
return res.status(400).send({ success: false, message: 'Run not successful or no data to update' });
|
||||||
} catch (error) {
|
} catch (error: any) {
|
||||||
logger.log('error', `Failed to write data to Google Sheet for ${req.params.fileName}_${req.params.runId}: ${error.message}`);
|
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 });
|
return res.status(500).send({ success: false, message: 'Failed to update Google Sheet', error: error.message });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export async function updateGoogleSheet(fileName: string, runId: string) {
|
||||||
|
try {
|
||||||
|
const run = await readFile(`./../storage/runs/${fileName}_${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(); // Assume this function loads config
|
||||||
|
|
||||||
|
if (integrationConfig) {
|
||||||
|
const { spreadsheetId, sheetName } = integrationConfig;
|
||||||
|
|
||||||
|
if (spreadsheetId && sheetName) {
|
||||||
|
// 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 ${fileName}_${runId}`);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.log('error', 'Google Sheet integration not configured');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.log('error', 'Run not successful or no data to update');
|
||||||
|
}
|
||||||
|
} catch (error: any) {
|
||||||
|
logger.log('error', `Failed to write data to Google Sheet for ${fileName}_${runId}: ${error.message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user