1
0
mirror of https://github.com/elisspace/FxLifeSheet.git synced 2026-08-29 15:44:00 +00:00
Files
FxLifeSheet/classes/google_sheets.ts
2019-04-30 12:56:30 +02:00

74 lines
2.4 KiB
TypeScript

// Sheets setup
var GoogleSpreadsheet = require("google-spreadsheet");
var async = require("async");
// spreadsheet key is the long id in the sheets URL
console.log("Loading " + process.env.GOOGLE_SHEETS_DOC_ID);
var doc = new GoogleSpreadsheet(process.env.GOOGLE_SHEETS_DOC_ID);
var rawDataSheet;
var lastRunSheet;
function setupGoogleSheets(callback) {
console.log("Starting Google Sheets Login, this might take a few seconds...");
async.series(
[
function setAuth(step) {
var creds = {
client_email: process.env.GOOGLE_SHEETS_CLIENT_EMAIL,
private_key: process.env.GOOGLE_SHEETS_PRIVATE_KEY.replace(
/\\n/g,
"\n"
)
};
doc.useServiceAccountAuth(creds, step);
},
function getInfoAndWorksheets(step) {
doc.getInfo(function(error, info) {
if (error) {
console.error(error);
}
console.log("Loaded doc: " + info.title + " by " + info.author.email);
for (let i = 0; i < info.worksheets.length; i++) {
// we iterate over those and check the name, as we don't want to use indexes to access a sheet directly
// to allow the user to order those sheets to however they want
let currentSheet = info.worksheets[i];
if (currentSheet.title.toLowerCase() == "rawdata") {
rawDataSheet = currentSheet;
} else if (currentSheet.title.toLowerCase() == "lastrun") {
lastRunSheet = currentSheet;
} else {
console.log("Ignoring user's sheet named " + currentSheet.title);
}
}
if (rawDataSheet == null || lastRunSheet == null) {
console.error(
"Something is wrong with the Sheet, please make sure to create 2 sheets: RawData and LastRun, according to the project's README and try again"
);
return;
}
console.log(
"Found the relevant sheets, already " +
rawDataSheet.rowCount +
" existing data entries"
);
step();
});
}
],
function(err) {
if (err) {
console.log("Error: " + err);
} else {
console.log("Google login successful");
callback(rawDataSheet, lastRunSheet);
}
}
);
}
module.exports.setupGoogleSheets = setupGoogleSheets;
export {};