I needed some non-technical people to manage dynamic data. I discovered google sheets now has a query wrapper (gviz ) that exports to CSV with CORS enabled. So if you have a public sheet, this is all you need to extract it as an array of objects whose feildnames are the header row in the sheet. Its awesome!
const sheetId = '1Z7Dja43FepxVOJc5_pMdP0etERM6h0BPAWT74zjdbno';
const sheetName = 'Sheet1'; // Change if your sheet name is different
const url = `https://docs.google.com/spreadsheets/d/${sheetId}/gviz/tq?tqx=out:csv&sheet=${sheetName}`;
return d3.csv(url)