node package manager


NPM Build Status


Processes any spreadsheet in the cloud into a set of vocab json files.


  • Add grunt-cloudfile-to-vocab as a dependency in your project's package.json
  • In your Gruntfile.js, inside your grunt.initConfig(), add the following:
    cloudfile_to_vocab: {
        default: {
            options: {
                output_directory:      'source/vocabs',
                google_spreadsheet_id: '--google spreadsheet id--',
                worksheets:            ['Sheet1'],
                whitelisted_services:  ['english', 'mundo'],
                serviceEmail:          '--google service email--',
                certLocation:          '--full path to your service email certificate--'

Register a task, e.g.

grunt.registerTask('make_vocabs',  ['cloudfile_to_vocab']);

Creating a service account email and certificate

  1. Go to
  2. Create a project
  3. In the project, go to 'APIs & Auth' -> 'Credentials' and 'Create New Client ID'
  4. Select 'Service Account' as the type and p12 as your container
  5. Convert the downloaded p12 to PEM with 'openssl pkcs12 -in [the pem file] -out google-oauth.pem -nocerts -nodes
  6. Copy your service email address into the config and change certLocation to the location of your generated certificate (.pem)


Create a Google spreadsheet and start populating it with content (see examples below).

Run your task to automatically generate vocab JSON files from a Google spreadsheet.

Running tests

To run the tests add a google account user name and password into the grunt config file.

Example input/output


NB: The 'ignore' in the left column ensures that that row is not included in the rendered output.

               | english               | persian
ignore         | Instructions go here. | ...
project_header | Hello, World!         | سلام جهان!
project_intro  | This is my intro...   | این مقدمه من است ...



    "project_header": "Hello, World!",
    "project_intro": "This is my intro..."


    "project_header": "سلام جهان!",
    "project_intro": "این مقدمه من است ..."

You can now populate your project with these variables, thereby being able to deliver your project in a language-agnostic way, paving the way for delivering to multiple nationalities.

Known issues

Make sure you are not on a proxy network or it cannot connect to Google.