grunt-spreadsheet-to-json
v0.1.2
Published
Takes a Google Spreadsheet with translations and generates multiple JSON files from the columns.
Downloads
8
Readme
grunt-spreadsheet-to-json
Takes a Google Spreadsheet with translations and generates multiple JSON files from the columns.
Getting Started
This plugin requires Grunt ~0.4.5
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-spreadsheet-to-json --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-spreadsheet-to-json');
Getting Google Drive API access
To access the Google Drive API you need to create a so called service account and then share your spreadsheet(s) with that account's email address.
Here is a step by step howto (credits to Theo Ephraim):
- Go to the Google Developers Console
- Select your project or create a new one (and then select it)
- Enable the Drive API for your project
- In the sidebar on the left, expand APIs & auth > APIs
- Search for "drive"
- Click on "Drive API"
- click the blue "Enable API" button
- Create a service account for your project
- In the sidebar on the left, expand APIs & auth > Credentials
- Click blue "Add credentials" button
- Select the "Service account" option
- Select the "JSON" key type option
- Click blue "Create" button
- your JSON key file is generated and downloaded to your machine (it is the only copy!)
- note your service account's email address (also available in the JSON key file)
- Share the doc (or docs) with your service account using the email noted above
The "spreadsheet_to_json" task
Overview
In your project's Gruntfile, add a section named spreadsheet_to_json
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
spreadsheet_to_json: {
options: {
// Task-specific options go here.
},
your_target: {
// Target-specific file lists and/or options go here.
},
},
});
The task will interpret a spreadsheet's first row as language column headings and the first column as being the translation keys:
| | en | de | fr | | |-----------------------|-------------|-------------|----------------|---| | STARTSCREEN.HEADLINE | Hello World | Hallo Welt | Salut le monde | | | STARTSCREEN.PARAGRAPH | Lorem ipsum | Lorem ipsum | Lorem ipsum | | | STARTSCREEN.CTA | Click me! | Klick mich! | Clickez moi! | |
It will create one separate JSON file per language with key-value-pairs.
Options
options.keyfile
Type: String
Required, no default value
Path to the JSON key file that was provided by the Google Developers Console.
options.spreadsheetId
Type: String
Required, no default value
You find the spreadsheet id sitting in the URL:
https://docs.google.com/document/d/
1I5SeO5P621T4J6AoE-xz_NmZTblAJFqGw7fWI2Fw82A /edit
options.ignoreColumns
Type: Array
Default value: []
An array of column names that should be ignored.
Usage Example
grunt.initConfig({
spreadsheet_to_json: {
options: {
keyfile: 'path/to/google-drive-api-key.json'
},
translations: {
options: {
spreadsheetId: '1I5SeO5P621T4J6AoE-xz_NmZTblAJFqGw7fWI2Fw82A',
ignoreColumns: ['annotations'] // optional
},
dest: 'path/to/translation-jsons'
}
}
});
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.