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); }
 |