1.1.1 • Published 1 year ago

simple-google-client v1.1.1

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

simple-google-client:

Information:

This is a utility package for projects that interact with some basic Google APIs

  • This package is designed to make both authentication and interaction with Google APIs easier
  • This package handles the auth flow and token storage to make it easier to use Google APIs
  • Your OAuth tokens are encrypted and not stored in plain text
  • Changing your credentials.json file will automatically invalidate previously stored tokens
  • If possible, your existing OAuth tokens will be refreshed when they are used

Installation:

npm install simple-google-client

Usage:

1. Store your credentials file from your Google Cloud Project as credentials.json in the root directory of your project

  • You can get this file by navigating to: Google Cloud Website -> {Your Project Name} -> APIs & Services -> Credentials -> OAuth 2.0 Client IDs -> {Your Client Name} -> Actions -> Download OAuth Client -> Download JSON
  • You can manually specify a different path for this file, but I recommend keeping it within your root project directory

2. Require GoogleClient and GoogleAPI from GoogleClient:

const { GoogleClient, GoogleAPI } = require('simple-google-client');

3. Make a new instance of GoogleClient:

const client = new GoogleClient();

The constructor of GoogleClient takes the following (optional) arguments:

  • credentialsPath:
    • Type: String
    • Default: path.join(require.main.path, 'credentials.json')
    • Info: The path to your configuration file credentials.json for the OAuth process
  • scopes:
    • Type: String Array
    • Default: []
    • Info: These are the scopes that the auth process will request via OAuth, a list of which can be found here.
  • disableLogging
    • Type: Boolean
    • Default: false
    • Info: Setting this to true will disable console outputs from simple-google-client

4. Run GoogleClient.start() on your instance of GoogleClient:

client.start()
    .then(async function() {
        // Your code here
    })
    .catch(console.error);

GoogleClient.start handles the auth process and returns a promise:

  • Resolves if auth succeeds: All code in the then block can then interact with GoogleAPI without having to handle any auth
  • Rejects if auth fails: You will not be able to interact with GoogleAPI without having completed auth
  • You should only make one call to GoogleClient.start per instance

Example:

const { GoogleClient, GoogleAPI } = require('simple-google-client');
const client = new GoogleClient(['https://www.googleapis.com/auth/spreadsheets'], false);
client.start()
    .then(async function() {
        const sheetsAPI = GoogleAPI.sheets('v4');
        
        // This will set: A1=1, B1=2, A2=3, B2=4 (https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values#ValueRange)
        const sheetValues = [[1,2], [3,4]];
        
        // https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/update
        const result = await sheetsAPI.spreadsheets.values.update({
            spreadsheetId: 'YourSheetId',
            range: 'Sheet1!A1:B2',
            valueInputOption: 1,
            resource: {
                values: sheetValues,
            },
        });

        console.log('Response:', result);
    })
    .catch(console.error);

Disclaimer:

  • This project utilizes googleapis and @google-cloud/local-auth, which are third-party dependencies licensed under the Apache 2.0 license.
  • This project is not affiliated with or endorsed by Google.
  • By using this package, you assume all risks and liabilities associated with its usage.
  • The developers and contributors of this project are not responsible for any damages or issues arising from the use of these dependencies.
  • It is your responsibility to review and comply with the Apache 2.0 license terms of the dependencies.

⚠️ This project was intentionally designed for a very narrow set of use-cases. I will not be implementing additional features or changes suggested via feedback!

1.1.1

1 year ago

1.1.0

1 year ago

1.0.0

1 year ago