Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

google-api-wrapper

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

google-api-wrapper

Google API Wrapper

  • 1.12.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Google API Wrapper

A simpler way to work with Google Sheets and Google Drive files. 😊

Table of Contents

Overview

Simple Wrapper around Google Sheets & Drive APIs. It installs googleapis as dependency. It also allows easy access to underlying googleapis objects.

Installation

npm install google-api-wrapper

This will add googleapis as dependency.

Basic Usage

const Google = require('google-api-wrapper');

async function main() {
  Google.loadCredFile('/path/to/credentails.json');
  Google.loadTokenFile('/path/to/token.json');
  const Sheet = Google.getSheet();
  const rows = await Sheet.read('1nZqgw5otHxvg7by-qnYmjkyNdHAPQYgduv7Tbf5aKlw');
  console.log(rows);
}

main();

Authentication

If you already have auth object

Googe.setAuth(authObject);

Or, set credential file followed by token

Google.loadCredFile('/path/to/credentails.json');
Google.loadTokenFile('/path/to/token.json');

Or, set them directly from json objects

Google.setCred(cred);
Google.setToken(token);

Or, exchange token provided from OAuth

Google.setCred(cred);
let token = await Google.exchangeCode(code);

Or, set refresh token

Google.setCred(cred);
Google.setRefreshToken(refresh_token);

Google Sheets

Reading Sheet

Sheet object maintains an internal sheetId and range.

const Sheet = Google.getSheet();
await Sheet.read(id, range = 'Sheet1');

It two-dimensional array of rows and column values of sheet data. Alternatively, you can set id and range separately.

Sheet.set(id, range)
await Sheet.read();

To assume first column as header and read documents:

await Sheet.readDocs(id, range = 'Sheet1');
await Sheet.readDocs(sheet_name, range, { byName: false, slugify: true });

Returns an array of objects by using first row as field names. "slugify" will convert field names to snake case (eg: "Min. Qty" to "min_qty")

Writing (Appending) to Sheet

const Sheet = Google.getSheet();
Sheet.set(id, range); // range defaults to 'Sheet1', if not provided
await Sheet.clear(); // clears the range / sheet tab
await Sheet.write(row1);
await Sheet.write(row2);
await Sheet.endWrite();

Batches up multiple rows and then appends at once at interval of 500 rows, or when endWrite() is called. You must make a final call to endWrite to complete writing to sheet.

Overwriting to Sheet

const Sheet = Google.getSheet();
const rows = await Sheet.read(sheetId, 'Sheet1');
rows[0][0] = 'Updated!';
await Sheet.overwrite(rows);

Overwrite rows at last set Sheet Id and Range. (set by read operation in previous example)

Creating Sheet

const Sheet = Google.getSheet();
await Sheet.create(name);
await Sheet.write([ 'hello', 'there' ]);
await Sheet.create(name, folderId);

Google Drive

Get File Info by Id

const Drive = Google.getDrive();
const file = Drive.byId(fileId);

It returns a file object with { id, name, mimeType } attributes.

Get File Info by Name

Drive.byName(name, type = null, folderId = null);

Example:

const Drive = Google.getDrive();
let file;
file = Drive.byName('My Document');
file = Drive.byName('example.csv', 'type/csv', parentFolderId);
file = Drive.byName('Example', null, parentFolderId);

It returns a file object with { id, name, mimeType } attributes.

List Files in a Folder

Drive.list(folderId);

Example: to list all files under a folder named "My Folder"

const Drive = Google.getDrive();
const folder = Drive.byName('My Folder');
const files = Drive.list(folder.id);

It returns an array of file objects with { id, name, mimeType } attributes.

Reading File (Raw)

const Drive = Google.getDrive();
await Drive.readFile(id);

Returns string of file content.

Copy File

const Drive = Google.getDrive();
await Drive.copy(fileId, newName);

Move File

const Drive = Google.getDrive();
await Drive.move(fileId, folderId);

Upload File

const Drive = Google.getDrive();
const file = await Drive.create(name, mimeType, body, parentFolderId);

Create Folder

const file = await Drive.create(name, 'folder');

See mime-type mappings below for simplified mime type inputs.

To create a sub-folder under another parent folder, provide null body and parent folder id.

const file = await Drive.create(subFolderName, 'folder', null, parentFolderId);

Miscellaneous

Mime Type Mappings

Quick mimetype mappings:

Input Mime TypeTranslated Mime Type
'folder''application/vnd.google-apps.folder'
'doc''application/vnd.google-apps.document'
'document''application/vnd.google-apps.document'
'sheet''application/vnd.google-apps.spreadsheet'
'spreadsheet''application/vnd.google-apps.spreadsheet'

Accessing underlying Google API

Drive object holds reference to Google API's drive object as a property 'drive', which you can use to call the methods of Google Drive API.

For example, to list comments on a document named 'My Document', follow below

const Google = require('google-api-wrapper');
const Drive = Google.getDrive();
const file = Drive.byName('My Document');
// Below is call to underlying Google Drive API's method directly
const comments = Drive.drive.comments.list({ fileId: file.id });

Similarly, Google Sheet object is stored as 'sheet' property of wrapper's sheet object. methods on Sheet.sheet can be made as per Google Sheet API.

const Google = require('google-api-wrapper');
const Sheet = Google.getSheet();
// Calls underlying Google Sheet API
Sheet.sheet.spreadsheets.batchGet(options);

Testing

To test the package,

  1. Create / download credentails.json file from Google Console.
  2. After OAuth2, capture the token returned in token.json file.
  3. Create .env file with path to these two files as below
# .env file
CRED_PATH=/path/to/credentials.json
TOKEN_PATH=/path/to/token.json
  1. run npm test

Keywords

FAQs

Package last updated on 20 Jun 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc