forked from sheetjs/docs.sheetjs.com
		
	
		
			
				
	
	
		
			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); }
 |