88 lines
2.4 KiB
JavaScript
88 lines
2.4 KiB
JavaScript
|
import { google } from "googleapis";
|
||
|
|
||
|
/* 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 primary account address, NOT THE SERVICE ACCOUNT */
|
||
|
const acct = "YOUR_ADDRESS@gmail.com";
|
||
|
|
||
|
/* 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 });
|
||
|
const drive = google.drive({version: "v3", auth: jwt });
|
||
|
|
||
|
/* create new google workbook */
|
||
|
const [id, sheet0id] = await (async() => {
|
||
|
const res = await sheets.spreadsheets.create({
|
||
|
requestBody: {
|
||
|
properties: {
|
||
|
title: "SheetJS Test"
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
const id = res.data.spreadsheetId;
|
||
|
const sheet0id = res.data.sheets[0].properties.sheetId;
|
||
|
return [id, sheet0id];
|
||
|
})();
|
||
|
console.log(`Created Google Workbook ${id}`);
|
||
|
|
||
|
/* create new google worksheet and delete initial sheet */
|
||
|
const [sheet1id, sheet2id] = await (async() => {
|
||
|
const res = await sheets.spreadsheets.batchUpdate({
|
||
|
spreadsheetId: id,
|
||
|
requestBody: { requests: [
|
||
|
/* add SheetJS1 */
|
||
|
{ addSheet: { properties: { title: "SheetJS1" } } },
|
||
|
/* add SheetJS2 */
|
||
|
{ addSheet: { properties: { title: "SheetJS2" } } },
|
||
|
/* remove default sheet */
|
||
|
{ deleteSheet: { sheetId: sheet0id } },
|
||
|
] }
|
||
|
});
|
||
|
console.log(`Created Google Worksheets "SheetJS1" and "SheetJS2"`);
|
||
|
return res.data.replies.slice(0,2).map(r => r.addSheet.properties.sheetId);
|
||
|
})();
|
||
|
|
||
|
await sheets.spreadsheets.values.update({
|
||
|
spreadsheetId: id,
|
||
|
range: "SheetJS1!A1",
|
||
|
valueInputOption: "USER_ENTERED",
|
||
|
resource: { values: [
|
||
|
["Sheet", "JS"],
|
||
|
[72, 62]
|
||
|
]}
|
||
|
});
|
||
|
|
||
|
await sheets.spreadsheets.values.update({
|
||
|
spreadsheetId: id,
|
||
|
range: "SheetJS2!A1",
|
||
|
valueInputOption: "USER_ENTERED",
|
||
|
resource: { values: [
|
||
|
["Area Code", "Part 1", "Part 2"],
|
||
|
[201, 867, 5309],
|
||
|
[281, 330, 8004],
|
||
|
]}
|
||
|
});
|
||
|
|
||
|
/* Share new Document with the primary account */
|
||
|
try {
|
||
|
await drive.permissions.create({
|
||
|
fileId: id,
|
||
|
fields: "id",
|
||
|
requestBody: {
|
||
|
type: "user",
|
||
|
role: "writer",
|
||
|
emailAddress: acct
|
||
|
}
|
||
|
});
|
||
|
console.log(`Shared ${id} with ${acct}`);
|
||
|
} catch(e) { console.log(e); }
|