npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@skypager/helpers-google-doc

v1.2.4

Published

skypager google docs helper

Readme

Google Docs Helper

Provides a model for working with google documents, as collections of documents and individual instances.

Use this helper to build a content object model which combines an organized collection of google documents, with JavaScript functions that can be used to represent the information in them in some desired format.

This can be used to power a static site generator, a blog, use your imagination.

Learn about their structure

This can be used to turn google documents into markdown, or to treat google documents as a content database for a CMS.

Installation

To use this library in your own project, make sure to install it

Via NPM

npm install @skypager/node @skypager/helpers-google-doc --save

Via YARN

yarn add @skypager/node @skypager/helpers-google-doc --save

Required Setup

You'll need

  1. a Service Account JSON
  2. The Google Drive and Google Sheets APIs
  3. Google Sheets shared with the client_email from the service account.

Server to Server Auth

Using this module requires using interacting with Google APIs using their server to server auth method, which is powered by Service Account credentials.

A Service Account credential looks like:

{
  "type": "service_account",
  "project_id": "your-project-id",
  "private_key_id": "your-private-key-id",
  "private_key": "-----BEGIN PRIVATE KEY-----\nYOUR-PRIVATE_KEY\n-----END PRIVATE KEY-----\n",
  "client_email": "[email protected]",
  "client_id": "your-client-id",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/your-project-id.iam.gserviceaccount.com"
}

You can manage your Service Accounts by going to the Google Cloud Console and creating a project or selecting the one you want to work with.

Once you are there, under the IAM & admin section you can click on Service Accounts. (e.g. https://console.cloud.google.com/iam-admin/serviceaccounts?project=your-project-id)

Create a service account, and download the JSON to secrets/serviceAccount.json, or some other path.

You'll use this service account when activating the helper, as you'll see in USAGE.

Enable Google APIs

You'll also need to enable the Google Drive Google and Google Docs APIs.

In the Google Cloud Console, under APIs and Services choose Library (e.g. https://console.cloud.google.com/apis/library?project=your-project-id)

Share Your Docs

With the server to server auth set up, the last step is to share the documents you want to load with the service account client email you'll be using to access them.

You can find the email address in client_id property of the service account json

Usage

Until I get better acquainted with the underlying google apis this library uses, the service account has to be saved to disk.

const runtime = require('@skypager/node')
const GoogleDocHelper = require('@skypager/helpers-google-doc')

const pathToServiceAccount = process.env.GOOGLE_APPLICATION_CREDENTIALS || '/path/to/service-account.json'
const serviceAccount = require(pathToServiceAccount)
const googleProject = process.env.GCLOUD_PROJECT || serviceAccount.project_id

// this creates runtime.googleDocs and runtime.googleDoc 
runtime.use(GoogleDocHelper, {
  serviceAccount: pathToServiceAccount,
  googleProject
})

main()

async function main() {
  await runtime.googleDocs.discover({ includeTeamDrives: true })

  const firstAvailable = runtime.googleDocs.available[0]
  const googleDoc = runtime.googleDoc(firstAvailable)

  await googleDoc.load()

  const { 
    // the title of your doc
    title,
    // all of the content nodes 
    contentNodes = [],
    // all the heading nodes
    headingNodes = [],
    // all the paragraph nodes
    paragraphNodes = [], 
    // all the lists
    lists = [], 
    // all the tables
    tables = [] ,
    // all of the styles (e.g. heading 1, heading 2)
    namedStyles = {}
  } = googleDoc

  console.log({ 
    title, 
    namedStyles,
    contentNodes: contentNodes.length, 
    headingNodes: headingNodes.length, 
    lists: lists.length,
    namedStyles: Object.keys(namedStyles).length
  })
}