import { google } from "googleapis";

import { set_fs, writeFile, utils } from 'xlsx';
import * as fs from 'fs';
set_fs(fs);

/* Change this import statement to point to the credentials JSON file */
import creds from './sheetjs-test-726272627262.json' assert { type: "json" };

/* Change this to the spreadsheet ID */
const id = "SOME-SPREADSHEETJS-ID";

/* connect to google services */
const jwt = new google.auth.JWT({
  email: creds.client_email,
  key: creds.private_key,
  scopes: [
    'https://www.googleapis.com/auth/spreadsheets',
    'https://www.googleapis.com/auth/drive.file',
  ]
});

const sheets = google.sheets({ version: "v4", auth: jwt });

/* get existing sheets */
const wsheet = await sheets.spreadsheets.get({spreadsheetId: id});

/* create a workbook */
const wb = utils.book_new();

for(let sheet of wsheet.data.sheets) {
  const name = sheet.properties.title;
  const res = await sheets.spreadsheets.values.get({
    spreadsheetId: id,
    range: `'${name}'`
  });
  utils.book_append_sheet(wb, utils.aoa_to_sheet(res.data.values), name);
}
writeFile(wb, "SheetJSExport.xlsb");