-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwrite.js
More file actions
52 lines (41 loc) · 1.29 KB
/
write.js
File metadata and controls
52 lines (41 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
const { google } = require('googleapis')
const fs = require('fs')
require('dotenv').config()
const SPREADSHEET_ID = '1X5WZaBcvkt_2e3L2gYvCjsMjAE2KHtinUK1Yl5jwYpA'
async function getData() {
let sheets = google.sheets("v4");
let spreadsheet = await sheets.spreadsheets.get({
spreadsheetId: SPREADSHEET_ID,
auth: process.env.GAPI_KEY
});
let ranges = spreadsheet.data.sheets.map(sheet => sheet.properties.title);
let sheetData = ranges.map(async function(sheet, index) {
let response = await sheets.spreadsheets.values.get({
spreadsheetId: SPREADSHEET_ID,
range: `'${sheet}'!A:Z`,
auth: process.env.GAPI_KEY
});
let values = response.data.values;
return {
key: ranges[index],
title: values[0][0] || "",
subtitle: values[1][0] || "",
credits: values[2] ? values[2][0] : "",
tags: values[3] ? values[3][0].split(",").map(t => t.trim()) : [],
pdf: values[4] ? values[4][0] : "",
rows: values.slice(5)
};
});
return sheetData;
}
async function run() {
try {
let data = await getData();
let sheetData = await Promise.all(data).then(json =>
fs.writeFileSync("./src/app/charts.json", JSON.stringify(json))
);
} catch (err) {
console.log(err); // output to netlify function log
}
}
run();