├── .ruby-version
├── source
├── fonts
│ ├── slate.eot
│ ├── slate.ttf
│ ├── slate.woff
│ ├── slate.woff2
│ └── slate.svg
├── images
│ ├── logo.png
│ ├── lois.png
│ ├── peter.png
│ ├── chrome.png
│ ├── navbar.png
│ ├── safari.png
│ └── example_spreadsheet.png
├── javascripts
│ ├── all_nosearch.js
│ ├── all.js
│ ├── lib
│ │ ├── _gtm.js
│ │ ├── _jquery.highlight.js
│ │ ├── _energize.js
│ │ ├── _imagesloaded.min.js
│ │ ├── _ahoy.js
│ │ └── _jquery_ui.js
│ └── app
│ │ ├── _toc.js
│ │ ├── _search.js
│ │ └── _lang.js
├── includes
│ ├── _core.md
│ ├── _introduction.md
│ ├── _other.md
│ ├── _snippet.md
│ └── core
│ │ ├── _update.md
│ │ ├── _delete.md
│ │ ├── _create.md
│ │ └── _read.md
├── index.html.md
├── stylesheets
│ ├── _icon-font.scss
│ ├── print.css.scss
│ ├── _variables.scss
│ ├── _normalize.scss
│ └── screen.css.scss
└── layouts
│ └── layout.erb
├── deploy_production.sh
├── .travis.yml
├── Gemfile
├── .gitignore
├── lib
└── multilang.rb
├── LICENSE
├── config.rb
├── Vagrantfile
├── README.md
├── CHANGELOG.md
├── Gemfile.lock
└── font-selection.json
/.ruby-version:
--------------------------------------------------------------------------------
1 | 2.3.0
2 |
--------------------------------------------------------------------------------
/source/fonts/slate.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sheetdb/sheetsu-docs/HEAD/source/fonts/slate.eot
--------------------------------------------------------------------------------
/source/fonts/slate.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sheetdb/sheetsu-docs/HEAD/source/fonts/slate.ttf
--------------------------------------------------------------------------------
/source/fonts/slate.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sheetdb/sheetsu-docs/HEAD/source/fonts/slate.woff
--------------------------------------------------------------------------------
/source/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sheetdb/sheetsu-docs/HEAD/source/images/logo.png
--------------------------------------------------------------------------------
/source/images/lois.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sheetdb/sheetsu-docs/HEAD/source/images/lois.png
--------------------------------------------------------------------------------
/source/images/peter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sheetdb/sheetsu-docs/HEAD/source/images/peter.png
--------------------------------------------------------------------------------
/source/fonts/slate.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sheetdb/sheetsu-docs/HEAD/source/fonts/slate.woff2
--------------------------------------------------------------------------------
/source/images/chrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sheetdb/sheetsu-docs/HEAD/source/images/chrome.png
--------------------------------------------------------------------------------
/source/images/navbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sheetdb/sheetsu-docs/HEAD/source/images/navbar.png
--------------------------------------------------------------------------------
/source/images/safari.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sheetdb/sheetsu-docs/HEAD/source/images/safari.png
--------------------------------------------------------------------------------
/deploy_production.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | scp -r build/* deployer@docs.sheetsu.com:/home/deployer/docs.sheetsu.com
3 |
--------------------------------------------------------------------------------
/source/images/example_spreadsheet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sheetdb/sheetsu-docs/HEAD/source/images/example_spreadsheet.png
--------------------------------------------------------------------------------
/source/javascripts/all_nosearch.js:
--------------------------------------------------------------------------------
1 | //= require ./lib/_gtm
2 | //= require ./lib/_energize
3 | //= require ./app/_lang
4 | //= require ./app/_toc
5 | //= require ./lib/_ahoy
6 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: false
2 |
3 | language: ruby
4 |
5 | rvm:
6 | - 2.2.5
7 | - 2.3.3
8 | - 2.4.0
9 |
10 | cache: bundler
11 | script: bundle exec middleman build
12 |
--------------------------------------------------------------------------------
/source/includes/_core.md:
--------------------------------------------------------------------------------
1 | # Core
2 | Edit on GitHub
3 |
--------------------------------------------------------------------------------
/source/javascripts/all.js:
--------------------------------------------------------------------------------
1 | //= require ./lib/_gtm
2 | //= require ./lib/_energize
3 | //= require ./app/_lang
4 | //= require ./app/_search
5 | //= require ./app/_toc
6 | //= require ./lib/_ahoy
7 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | ruby '>= 2.3.1'
2 |
3 | source 'https://rubygems.org'
4 |
5 | # Middleman
6 | gem 'middleman', '~>4.2.1'
7 | gem 'middleman-syntax', '~> 3.0.0'
8 | gem 'middleman-autoprefixer', '~> 2.7.0'
9 | gem "middleman-sprockets", "~> 4.1.0"
10 | gem 'rouge', '~> 2.0.5'
11 | gem 'redcarpet', '~> 3.4.0'
12 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.gem
2 | *.rbc
3 | .bundle
4 | .config
5 | coverage
6 | InstalledFiles
7 | lib/bundler/man
8 | pkg
9 | rdoc
10 | spec/reports
11 | test/tmp
12 | test/version_tmp
13 | tmp
14 | *.DS_STORE
15 | build/
16 | .cache
17 | .vagrant
18 | .sass-cache
19 |
20 | # YARD artifacts
21 | .yardoc
22 | _yardoc
23 | doc/
24 | .idea/
25 |
--------------------------------------------------------------------------------
/source/javascripts/lib/_gtm.js:
--------------------------------------------------------------------------------
1 | (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
2 | new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
3 | j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
4 | 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
5 | })(window,document,'script','dataLayer','GTM-PFW66ZF');
6 |
--------------------------------------------------------------------------------
/lib/multilang.rb:
--------------------------------------------------------------------------------
1 | module Multilang
2 | def block_code(code, full_lang_name)
3 | parts = full_lang_name.split('--')
4 | rouge_lang_name = parts[0] || ""
5 | super(code, rouge_lang_name).sub("highlight #{rouge_lang_name}") do |match|
6 | match + " tab-" + full_lang_name
7 | end
8 | end
9 | end
10 |
11 | require 'middleman-core/renderers/redcarpet'
12 | Middleman::Renderers::MiddlemanRedcarpetHTML.send :include, Multilang
13 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2008-2013 Concur Technologies, Inc.
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License"); you may
4 | not use this file except in compliance with the License. You may obtain
5 | a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12 | License for the specific language governing permissions and limitations
13 | under the License.
--------------------------------------------------------------------------------
/source/index.html.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Sheetsu Documentation
3 |
4 | language_tabs:
5 | - shell: cURL
6 | - xml: HTML Snippet
7 | - ruby: Ruby
8 | - javascript--node: Node
9 | - html--javascript: JavaScript Web Client
10 | - python: Python
11 | - php: PHP
12 | - javascript--jquery: JQuery
13 | - csharp: C#
14 | - swift: Swift
15 | - r: R
16 | - jsx: React
17 |
18 | toc_footers:
19 | - Dashboard
20 | - Pricing
21 |
22 | search: true
23 |
24 | includes:
25 | - introduction
26 | - core
27 | - core/read
28 | - core/create
29 | - core/update
30 | - core/delete
31 | - snippet
32 | - other
33 | ---
34 |
--------------------------------------------------------------------------------
/source/stylesheets/_icon-font.scss:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'slate';
3 | src:font-url('slate.eot?-syv14m');
4 | src:font-url('slate.eot?#iefix-syv14m') format('embedded-opentype'),
5 | font-url('slate.woff2?-syv14m') format('woff2'),
6 | font-url('slate.woff?-syv14m') format('woff'),
7 | font-url('slate.ttf?-syv14m') format('truetype'),
8 | font-url('slate.svg?-syv14m#slate') format('svg');
9 | font-weight: normal;
10 | font-style: normal;
11 | }
12 |
13 | %icon {
14 | font-family: 'slate';
15 | speak: none;
16 | font-style: normal;
17 | font-weight: normal;
18 | font-variant: normal;
19 | text-transform: none;
20 | line-height: 1;
21 | }
22 |
23 | %icon-exclamation-sign {
24 | @extend %icon;
25 | content: "\e600";
26 | }
27 | %icon-info-sign {
28 | @extend %icon;
29 | content: "\e602";
30 | }
31 | %icon-ok-sign {
32 | @extend %icon;
33 | content: "\e606";
34 | }
35 | %icon-search {
36 | @extend %icon;
37 | content: "\e607";
38 | }
39 |
--------------------------------------------------------------------------------
/config.rb:
--------------------------------------------------------------------------------
1 | # Markdown
2 | set :markdown_engine, :redcarpet
3 | set :markdown,
4 | fenced_code_blocks: true,
5 | smartypants: true,
6 | disable_indented_code_blocks: true,
7 | prettify: true,
8 | tables: true,
9 | with_toc_data: true,
10 | no_intra_emphasis: true
11 |
12 | # Assets
13 | set :css_dir, 'stylesheets'
14 | set :js_dir, 'javascripts'
15 | set :images_dir, 'images'
16 | set :fonts_dir, 'fonts'
17 |
18 | # Activate the syntax highlighter
19 | activate :syntax
20 | ready do
21 | require './lib/multilang.rb'
22 | end
23 |
24 | activate :sprockets
25 |
26 | activate :autoprefixer do |config|
27 | config.browsers = ['last 2 version', 'Firefox ESR']
28 | config.cascade = false
29 | config.inline = true
30 | end
31 |
32 | # Github pages require relative links
33 | activate :relative_assets
34 | set :relative_links, true
35 |
36 | # Build Configuration
37 | configure :build do
38 | # If you're having trouble with Middleman hanging, commenting
39 | # out the following two lines has been known to help
40 | activate :minify_css
41 | activate :minify_javascript
42 | # activate :relative_assets
43 | # activate :asset_hash
44 | # activate :gzip
45 | end
46 |
47 | # Deploy Configuration
48 | # If you want Middleman to listen on a different port, you can set that below
49 | set :port, 4567
50 |
--------------------------------------------------------------------------------
/Vagrantfile:
--------------------------------------------------------------------------------
1 | Vagrant.configure(2) do |config|
2 | config.vm.box = "ubuntu/trusty64"
3 | config.vm.network :forwarded_port, guest: 4567, host: 4567
4 |
5 | config.vm.provision "bootstrap",
6 | type: "shell",
7 | inline: <<-SHELL
8 | sudo apt-get update
9 | sudo apt-get install -yq ruby2.0 ruby2.0-dev pkg-config build-essential nodejs git libxml2-dev libxslt-dev
10 | sudo apt-get autoremove -yq
11 | gem2.0 install --no-ri --no-rdoc bundler
12 | SHELL
13 |
14 | # add the local user git config to the vm
15 | config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
16 |
17 | config.vm.provision "install",
18 | type: "shell",
19 | privileged: false,
20 | inline: <<-SHELL
21 | echo "=============================================="
22 | echo "Installing app dependencies"
23 | cd /vagrant
24 | bundle config build.nokogiri --use-system-libraries
25 | bundle install
26 | SHELL
27 |
28 | config.vm.provision "run",
29 | type: "shell",
30 | privileged: false,
31 | run: "always",
32 | inline: <<-SHELL
33 | echo "=============================================="
34 | echo "Starting up middleman at http://localhost:4567"
35 | echo "If it does not come up, check the ~/middleman.log file for any error messages"
36 | cd /vagrant
37 | bundle exec middleman server --force-polling --latency=1 &> ~/middleman.log &
38 | SHELL
39 | end
40 |
--------------------------------------------------------------------------------
/source/javascripts/app/_toc.js:
--------------------------------------------------------------------------------
1 | //= require ../lib/_jquery
2 | //= require ../lib/_jquery_ui
3 | //= require ../lib/_jquery.tocify
4 | //= require ../lib/_imagesloaded.min
5 | (function (global) {
6 | 'use strict';
7 |
8 | var closeToc = function() {
9 | $(".tocify-wrapper").removeClass('open');
10 | $("#nav-button").removeClass('open');
11 | };
12 |
13 | var makeToc = function() {
14 | global.toc = $("#toc").tocify({
15 | selectors: 'h1, h2',
16 | extendPage: false,
17 | theme: 'none',
18 | smoothScroll: false,
19 | showEffectSpeed: 0,
20 | hideEffectSpeed: 180,
21 | ignoreSelector: '.toc-ignore',
22 | highlightOffset: 60,
23 | scrollTo: -1,
24 | scrollHistory: true,
25 | hashGenerator: function (text, element) {
26 | return element.prop('id');
27 | }
28 | }).data('toc-tocify');
29 |
30 | $("#nav-button").click(function() {
31 | $(".tocify-wrapper").toggleClass('open');
32 | $("#nav-button").toggleClass('open');
33 | return false;
34 | });
35 |
36 | $(".page-wrapper").click(closeToc);
37 | $(".tocify-item").click(closeToc);
38 | };
39 |
40 | // Hack to make already open sections to start opened,
41 | // instead of displaying an ugly animation
42 | function animate() {
43 | setTimeout(function() {
44 | toc.setOption('showEffectSpeed', 180);
45 | }, 50);
46 | }
47 |
48 | $(function() {
49 | makeToc();
50 | animate();
51 | setupLanguages($('body').data('languages'));
52 | $('.content').imagesLoaded( function() {
53 | global.toc.calculateHeights();
54 | });
55 | });
56 | })(window);
57 |
58 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Official [Sheetsu.com](https://sheetsu.com) documentation
2 |
3 | Welcome to the official API documentation for Sheetsu.com, Google Spreadsheets as a REST APIs. We're happy you are here!
4 |
5 | Feel free to check out the [live documentation page](https://docs.sheetsu.com).
6 |
7 | If you'd like to make an edit to any of these pages, please [submit a pull request](https://github.com/sheetsu/docs/pulls). Take a look below, for instructions how to run this page locally. We use [Slate](https://lord.github.io/slate/) to power our docs.
8 |
9 | Getting Started
10 | ------------------------------
11 |
12 | ### Prerequisites
13 |
14 | You're going to need:
15 |
16 | - **Linux or OS X** — Windows may work, but is unsupported.
17 | - **Ruby, version 2.2.5 or newer**
18 | - **Bundler** — If Ruby is already installed, but the `bundle` command doesn't work, just run `gem install bundler` in a terminal.
19 |
20 | ### Getting Set Up
21 |
22 | 1. Fork this repository on Github.
23 | 2. Clone *your forked repository* (not our original one) to your hard drive with `git clone https://github.com/YOURUSERNAME/docs.git`
24 | 3. `cd docs`
25 | 4. Initialize and start Slate. You can either do this locally, or with Vagrant:
26 |
27 | ```shell
28 | # either run this to run locally
29 | bundle install
30 | bundle exec middleman server
31 |
32 | # OR run this to run with vagrant
33 | vagrant up
34 | ```
35 |
36 | You can now see the docs at http://localhost:4567. Whoa! That was fast!
37 |
38 | Now that Slate is all set up on your machine, you'll probably want to learn more about [editing Slate markdown](https://github.com/lord/slate/wiki/Markdown-Syntax), or [how to publish your docs](https://github.com/lord/slate/wiki/Deploying-Slate).
39 |
40 | If you'd prefer to use Docker, instructions are available [in the wiki](https://github.com/lord/slate/wiki/Docker).
41 |
--------------------------------------------------------------------------------
/source/javascripts/app/_search.js:
--------------------------------------------------------------------------------
1 | //= require ../lib/_lunr
2 | //= require ../lib/_jquery
3 | //= require ../lib/_jquery.highlight
4 | (function () {
5 | 'use strict';
6 |
7 | var content, searchResults;
8 | var highlightOpts = { element: 'span', className: 'search-highlight' };
9 |
10 | var index = new lunr.Index();
11 |
12 | index.ref('id');
13 | index.field('title', { boost: 10 });
14 | index.field('body');
15 | index.pipeline.add(lunr.trimmer, lunr.stopWordFilter);
16 |
17 | $(populate);
18 | $(bind);
19 |
20 | function populate() {
21 | $('h1, h2').each(function() {
22 | var title = $(this);
23 | var body = title.nextUntil('h1, h2');
24 | index.add({
25 | id: title.prop('id'),
26 | title: title.text(),
27 | body: body.text()
28 | });
29 | });
30 | }
31 |
32 | function bind() {
33 | content = $('.content');
34 | searchResults = $('.search-results');
35 |
36 | $('#input-search').on('keyup', search);
37 | }
38 |
39 | function search(event) {
40 | unhighlight();
41 | searchResults.addClass('visible');
42 |
43 | // ESC clears the field
44 | if (event.keyCode === 27) this.value = '';
45 |
46 | if (this.value) {
47 | var results = index.search(this.value).filter(function(r) {
48 | return r.score > 0.0001;
49 | });
50 |
51 | if (results.length) {
52 | searchResults.empty();
53 | $.each(results, function (index, result) {
54 | var elem = document.getElementById(result.ref);
55 | searchResults.append("
" + $(elem).text() + "");
56 | });
57 | highlight.call(this);
58 | } else {
59 | searchResults.html('');
60 | $('.search-results li').text('No Results Found for "' + this.value + '"');
61 | }
62 | } else {
63 | unhighlight();
64 | searchResults.removeClass('visible');
65 | }
66 | }
67 |
68 | function highlight() {
69 | if (this.value) content.highlight(this.value, highlightOpts);
70 | }
71 |
72 | function unhighlight() {
73 | content.unhighlight(highlightOpts);
74 | }
75 | })();
76 |
--------------------------------------------------------------------------------
/source/fonts/slate.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | ## Version 1.5.0
4 |
5 | *February 23, 2017*
6 |
7 | - Add [multiple tabs per programming language](https://github.com/lord/slate/wiki/Multiple-language-tabs-per-programming-language) feature
8 | - Upgrade Middleman to add Ruby 1.4.0 compatibility
9 | - Switch default code highlighting color scheme to better highlight JSON
10 | - Various small typo and bug fixes
11 |
12 | ## Version 1.4.0
13 |
14 | *November 24, 2016*
15 |
16 | - Upgrade Middleman and Rouge gems, should hopefully solve a number of bugs
17 | - Update some links in README
18 | - Fix broken Vagrant startup script
19 | - Fix some problems with deploy.sh help message
20 | - Fix bug with language tabs not hiding properly if no error
21 | - Add `!default` to SASS variables
22 | - Fix bug with logo margin
23 | - Bump tested Ruby versions in .travis.yml
24 |
25 | ## Version 1.3.3
26 |
27 | *June 11, 2016*
28 |
29 | Documentation and example changes.
30 |
31 | ## Version 1.3.2
32 |
33 | *February 3, 2016*
34 |
35 | A small bugfix for slightly incorrect background colors on code samples in some cases.
36 |
37 | ## Version 1.3.1
38 |
39 | *January 31, 2016*
40 |
41 | A small bugfix for incorrect whitespace in code blocks.
42 |
43 | ## Version 1.3
44 |
45 | *January 27, 2016*
46 |
47 | We've upgraded Middleman and a number of other dependencies, which should fix quite a few bugs.
48 |
49 | Instead of `rake build` and `rake deploy`, you should now run `bundle exec middleman build --clean` to build your server, and `./deploy.sh` to deploy it to Github Pages.
50 |
51 | ## Version 1.2
52 |
53 | *June 20, 2015*
54 |
55 | **Fixes:**
56 |
57 | - Remove crash on invalid languages
58 | - Update Tocify to scroll to the highlighted header in the Table of Contents
59 | - Fix variable leak and update search algorithms
60 | - Update Python examples to be valid Python
61 | - Update gems
62 | - More misc. bugfixes of Javascript errors
63 | - Add Dockerfile
64 | - Remove unused gems
65 | - Optimize images, fonts, and generated asset files
66 | - Add chinese font support
67 | - Remove RedCarpet header ID patch
68 | - Update language tabs to not disturb existing query strings
69 |
70 | ## Version 1.1
71 |
72 | *July 27, 2014*
73 |
74 | **Fixes:**
75 |
76 | - Finally, a fix for the redcarpet upgrade bug
77 |
78 | ## Version 1.0
79 |
80 | *July 2, 2014*
81 |
82 | [View Issues](https://github.com/tripit/slate/issues?milestone=1&state=closed)
83 |
84 | **Features:**
85 |
86 | - Responsive designs for phones and tablets
87 | - Started tagging versions
88 |
89 | **Fixes:**
90 |
91 | - Fixed 'unrecognized expression' error
92 | - Fixed #undefined hash bug
93 | - Fixed bug where the current language tab would be unselected
94 | - Fixed bug where tocify wouldn't highlight the current section while searching
95 | - Fixed bug where ids of header tags would have special characters that caused problems
96 | - Updated layout so that pages with disabled search wouldn't load search.js
97 | - Cleaned up Javascript
98 |
--------------------------------------------------------------------------------
/source/stylesheets/print.css.scss:
--------------------------------------------------------------------------------
1 | @charset "utf-8";
2 | @import 'normalize';
3 | @import 'variables';
4 | @import 'icon-font';
5 |
6 | /*
7 | Copyright 2008-2013 Concur Technologies, Inc.
8 |
9 | Licensed under the Apache License, Version 2.0 (the "License"); you may
10 | not use this file except in compliance with the License. You may obtain
11 | a copy of the License at
12 |
13 | http://www.apache.org/licenses/LICENSE-2.0
14 |
15 | Unless required by applicable law or agreed to in writing, software
16 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18 | License for the specific language governing permissions and limitations
19 | under the License.
20 | */
21 |
22 | $print-color: #999;
23 | $print-color-light: #ccc;
24 | $print-font-size: 12px;
25 |
26 | body {
27 | @extend %default-font;
28 | }
29 |
30 | .tocify, .toc-footer, .lang-selector, .search, #nav-button {
31 | display: none;
32 | }
33 |
34 | .tocify-wrapper>img {
35 | margin: 0 auto;
36 | display: block;
37 | }
38 |
39 | .content {
40 | font-size: 12px;
41 |
42 | pre, code {
43 | @extend %code-font;
44 | @extend %break-words;
45 | border: 1px solid $print-color;
46 | border-radius: 5px;
47 | font-size: 0.8em;
48 | }
49 |
50 | pre {
51 | code {
52 | border: 0;
53 | }
54 | }
55 |
56 | pre {
57 | padding: 1.3em;
58 | }
59 |
60 | code {
61 | padding: 0.2em;
62 | }
63 |
64 | table {
65 | border: 1px solid $print-color;
66 | tr {
67 | border-bottom: 1px solid $print-color;
68 | }
69 | td,th {
70 | padding: 0.7em;
71 | }
72 | }
73 |
74 | p {
75 | line-height: 1.5;
76 | }
77 |
78 | a {
79 | text-decoration: none;
80 | color: #000;
81 | }
82 |
83 | h1 {
84 | @extend %header-font;
85 | font-size: 2.5em;
86 | padding-top: 0.5em;
87 | padding-bottom: 0.5em;
88 | margin-top: 1em;
89 | margin-bottom: $h1-margin-bottom;
90 | border: 2px solid $print-color-light;
91 | border-width: 2px 0;
92 | text-align: center;
93 | }
94 |
95 | h2 {
96 | @extend %header-font;
97 | font-size: 1.8em;
98 | margin-top: 2em;
99 | border-top: 2px solid $print-color-light;
100 | padding-top: 0.8em;
101 | }
102 |
103 | h1+h2, h1+div+h2 {
104 | border-top: none;
105 | padding-top: 0;
106 | margin-top: 0;
107 | }
108 |
109 | h3, h4 {
110 | @extend %header-font;
111 | font-size: 0.8em;
112 | margin-top: 1.5em;
113 | margin-bottom: 0.8em;
114 | text-transform: uppercase;
115 | }
116 |
117 | h5, h6 {
118 | text-transform: uppercase;
119 | }
120 |
121 | aside {
122 | padding: 1em;
123 | border: 1px solid $print-color-light;
124 | border-radius: 5px;
125 | margin-top: 1.5em;
126 | margin-bottom: 1.5em;
127 | line-height: 1.6;
128 | }
129 |
130 | aside:before {
131 | vertical-align: middle;
132 | padding-right: 0.5em;
133 | font-size: 14px;
134 | }
135 |
136 | aside.notice:before {
137 | @extend %icon-info-sign;
138 | }
139 |
140 | aside.warning:before {
141 | @extend %icon-exclamation-sign;
142 | }
143 |
144 | aside.success:before {
145 | @extend %icon-ok-sign;
146 | }
147 | }
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | activesupport (5.0.6)
5 | concurrent-ruby (~> 1.0, >= 1.0.2)
6 | i18n (~> 0.7)
7 | minitest (~> 5.1)
8 | tzinfo (~> 1.1)
9 | addressable (2.5.2)
10 | public_suffix (>= 2.0.2, < 4.0)
11 | autoprefixer-rails (6.7.7.2)
12 | execjs
13 | backports (3.10.3)
14 | coffee-script (2.4.1)
15 | coffee-script-source
16 | execjs
17 | coffee-script-source (1.12.2)
18 | compass-import-once (1.0.5)
19 | sass (>= 3.2, < 3.5)
20 | concurrent-ruby (1.0.5)
21 | contracts (0.13.0)
22 | dotenv (2.2.1)
23 | erubis (2.7.0)
24 | execjs (2.7.0)
25 | fast_blank (1.0.0)
26 | fastimage (2.1.0)
27 | ffi (1.9.18)
28 | haml (5.0.4)
29 | temple (>= 0.8.0)
30 | tilt
31 | hamster (3.0.0)
32 | concurrent-ruby (~> 1.0)
33 | hashie (3.5.6)
34 | i18n (0.7.0)
35 | kramdown (1.15.0)
36 | listen (3.0.8)
37 | rb-fsevent (~> 0.9, >= 0.9.4)
38 | rb-inotify (~> 0.9, >= 0.9.7)
39 | memoist (0.16.0)
40 | middleman (4.2.1)
41 | coffee-script (~> 2.2)
42 | compass-import-once (= 1.0.5)
43 | haml (>= 4.0.5)
44 | kramdown (~> 1.2)
45 | middleman-cli (= 4.2.1)
46 | middleman-core (= 4.2.1)
47 | sass (>= 3.4.0, < 4.0)
48 | middleman-autoprefixer (2.7.1)
49 | autoprefixer-rails (>= 6.5.2, < 7.0.0)
50 | middleman-core (>= 3.3.3)
51 | middleman-cli (4.2.1)
52 | thor (>= 0.17.0, < 2.0)
53 | middleman-core (4.2.1)
54 | activesupport (>= 4.2, < 5.1)
55 | addressable (~> 2.3)
56 | backports (~> 3.6)
57 | bundler (~> 1.1)
58 | contracts (~> 0.13.0)
59 | dotenv
60 | erubis
61 | execjs (~> 2.0)
62 | fast_blank
63 | fastimage (~> 2.0)
64 | hamster (~> 3.0)
65 | hashie (~> 3.4)
66 | i18n (~> 0.7.0)
67 | listen (~> 3.0.0)
68 | memoist (~> 0.14)
69 | padrino-helpers (~> 0.13.0)
70 | parallel
71 | rack (>= 1.4.5, < 3)
72 | sass (>= 3.4)
73 | servolux
74 | tilt (~> 2.0)
75 | uglifier (~> 3.0)
76 | middleman-sprockets (4.1.1)
77 | middleman-core (~> 4.0)
78 | sprockets (>= 3.0)
79 | middleman-syntax (3.0.0)
80 | middleman-core (>= 3.2)
81 | rouge (~> 2.0)
82 | minitest (5.10.3)
83 | padrino-helpers (0.13.3.4)
84 | i18n (~> 0.6, >= 0.6.7)
85 | padrino-support (= 0.13.3.4)
86 | tilt (>= 1.4.1, < 3)
87 | padrino-support (0.13.3.4)
88 | activesupport (>= 3.1)
89 | parallel (1.12.0)
90 | public_suffix (3.0.1)
91 | rack (2.0.3)
92 | rb-fsevent (0.10.2)
93 | rb-inotify (0.9.10)
94 | ffi (>= 0.5.0, < 2)
95 | redcarpet (3.4.0)
96 | rouge (2.0.7)
97 | sass (3.4.25)
98 | servolux (0.13.0)
99 | sprockets (3.7.1)
100 | concurrent-ruby (~> 1.0)
101 | rack (> 1, < 3)
102 | temple (0.8.0)
103 | thor (0.20.0)
104 | thread_safe (0.3.6)
105 | tilt (2.0.8)
106 | tzinfo (1.2.4)
107 | thread_safe (~> 0.1)
108 | uglifier (3.2.0)
109 | execjs (>= 0.3.0, < 3)
110 |
111 | PLATFORMS
112 | ruby
113 |
114 | DEPENDENCIES
115 | middleman (~> 4.2.1)
116 | middleman-autoprefixer (~> 2.7.0)
117 | middleman-sprockets (~> 4.1.0)
118 | middleman-syntax (~> 3.0.0)
119 | redcarpet (~> 3.4.0)
120 | rouge (~> 2.0.5)
121 |
122 | RUBY VERSION
123 | ruby 2.3.1p112
124 |
125 | BUNDLED WITH
126 | 1.16.0
127 |
--------------------------------------------------------------------------------
/source/includes/_introduction.md:
--------------------------------------------------------------------------------
1 | # Introduction
2 | Edit on GitHub
3 |
4 | # Welcome
5 |
6 | You can view code examples in the area on the right. You can switch the programming language with the tabs in the top right. We provide examples in cURL, Ruby and some of them with our Snippet - which is pure HTML.
7 |
8 | Follow @sheetsuhq on Twitter for latest updates and news.
9 |
10 | # SDKs & Client libraries
11 |
12 | ### Official libraries
13 |
14 | * Ruby: [https://github.com/sheetsu/sheetsu-ruby](https://github.com/sheetsu/sheetsu-ruby)
15 | * Node: [https://github.com/sheetsu/sheetsu-node](https://github.com/sheetsu/sheetsu-node)
16 | * JavaScript Web Client: [https://github.com/sheetsu/sheetsu-web-client](https://github.com/sheetsu/sheetsu-web-client)
17 |
18 | ### Community libraries
19 |
20 | * PHP: [https://github.com/emilianozublena/sheetsu-php](https://github.com/emilianozublena/sheetsu-php)
21 | * Python: [https://github.com/andreffs18/sheetsu-python](https://github.com/andreffs18/sheetsu-python)
22 |
23 | # How to prepare spreadsheet
24 |
25 | Every spreadsheet should have the first row populated with column names. There are no mandatory fields or values you _need_ to have in your spreadsheet. The structure of the spreadsheet is totally up to you. Just keep in mind, that the first row (row #1) is treated as there are column names.
26 |
27 | Column names can be anything. Strings, numbers, symbols, emojis 🙉 , anything.
28 |
29 | You can check example spreadsheet here. It looks like this:
30 |
31 | 
32 |
33 | id | name | score
34 | ---|------|------
35 | 1 | Peter | 42
36 | 2 | Lois | 89
37 | 3 | Meg | 10
38 | 4 | Chris | 42
39 | 5 | Stewie | 72
40 |
41 | # Google Spreadsheet URL
42 |
43 | To properly use Sheetsu, please paste Google Spreadsheets URL. Just copy the URL from the browser address bar. There's no need for sharing the Google Spreadsheet.
44 |
45 | ### Google Chrome
46 | 
47 |
48 | ### Safari
49 | 
50 |
51 | # About the API
52 |
53 | The Sheetsu API is meant to provide a RESTful way to interact with a Google Spreadsheets. Our API uses HTTP response codes to indicate API errors. We use built-in HTTP features, like HTTP Basic authentication and HTTP verbs, which are understood by off-the-shelf HTTP clients.
54 |
55 | We support cross-origin resource sharing. JSON is returned by all API responses, including errors, although our API libraries convert responses to appropriate language-specific objects.
56 |
57 | The requests in the right sidebar are designed to work as is. The sample requests are performed using our test API and test spreadsheet, which you can find [here](https://docs.google.com/spreadsheets/d/1WTwXrh2ZDXmXATZlQIuapdv4ldyhJGZg7LX8GlzPdZw/edit#gid=0).
58 |
59 |
63 |
--------------------------------------------------------------------------------
/source/stylesheets/_variables.scss:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright 2008-2013 Concur Technologies, Inc.
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License"); you may
5 | not use this file except in compliance with the License. You may obtain
6 | a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 | License for the specific language governing permissions and limitations
14 | under the License.
15 | */
16 |
17 |
18 | ////////////////////////////////////////////////////////////////////////////////
19 | // CUSTOMIZE SLATE
20 | ////////////////////////////////////////////////////////////////////////////////
21 | // Use these settings to help adjust the appearance of Slate
22 |
23 | @import url('https://fonts.googleapis.com/css?family=Roboto+Mono|Roboto:400,500,700');
24 |
25 | // BACKGROUND COLORS
26 | ////////////////////
27 | // $nav-bg: #393939 !default;
28 | $nav-bg: #f8f8f8 !default;
29 | $examples-bg: #393939 !default;
30 | $code-bg: #292929 !default;
31 | $code-annotation-bg: #1c1c1c !default;
32 | $nav-subitem-bg: $nav-bg !default;
33 | $nav-active-bg: #3f88c5 !default;
34 | $lang-select-border: #000 !default;
35 | $lang-select-bg: #222 !default;
36 | $lang-select-active-bg: #118f57 !default; // feel free to change this to blue or something
37 | $lang-select-pressed-bg: #111 !default; // color of language tab bg when mouse is pressed
38 | $main-bg: #ffffff !default;
39 | $aside-notice-bg: #8fbcd4 !default;
40 | $aside-warning-bg: #c97a7e !default;
41 | $aside-success-bg: #6ac174 !default;
42 | $search-notice-bg: #c97a7e !default;
43 |
44 |
45 | // TEXT COLORS
46 | ////////////////////
47 | $main-text: #333 !default; // main content text color
48 | $nav-text: #333 !default;
49 | $nav-active-text: #fff !default;
50 | $lang-select-text: #fff !default; // color of unselected language tab text
51 | $lang-select-active-text: #fff !default; // color of selected language tab text
52 | $lang-select-pressed-text: #fff !default; // color of language tab text when mouse is pressed
53 | $border-color: #ddd !default;
54 |
55 |
56 | // SIZES
57 | ////////////////////
58 | $nav-width: 200px !default; // width of the navbar
59 | $examples-width: 50% !default; // portion of the screen taken up by code examples
60 | $logo-margin: 20px !default; // margin between nav items and logo, ignored if search is active
61 | $main-padding: 28px !default; // padding to left and right of content & examples
62 | $nav-padding: 15px !default; // padding to left and right of navbar
63 | $nav-v-padding: 10px !default; // padding used vertically around search boxes and results
64 | $nav-indent: 10px !default; // extra padding for ToC subitems
65 | $code-annotation-padding: 13px !default; // padding inside code annotations
66 | $h1-margin-bottom: 21px !default; // padding under the largest header tags
67 | $tablet-width: 930px !default; // min width before reverting to tablet size
68 | $phone-width: $tablet-width - $nav-width !default; // min width before reverting to mobile size
69 |
70 |
71 | // FONTS
72 | ////////////////////
73 | %default-font {
74 | font-family: 'Roboto', sans-serif;
75 | font-size: 16px;
76 | }
77 |
78 | %header-font {
79 | @extend %default-font;
80 | font-weight: bold;
81 | }
82 |
83 | %code-font {
84 | font-family: 'Roboto Mono', monospace;
85 | font-size: 14px;
86 | line-height: 1.5;
87 | }
88 |
89 |
90 | // OTHER
91 | ////////////////////
92 | $nav-active-shadow: #000 !default;
93 | $nav-footer-border-color: #ddd !default;
94 | $nav-embossed-border-top: #000 !default;
95 | $nav-embossed-border-bottom: #939393 !default;
96 | $main-embossed-text-shadow: 0px 1px 0px #fff !default;
97 | $search-box-border-color: #ddd !default;
98 |
99 |
100 | ////////////////////////////////////////////////////////////////////////////////
101 | // INTERNAL
102 | ////////////////////////////////////////////////////////////////////////////////
103 | // These settings are probably best left alone.
104 |
105 | %break-words {
106 | word-break: break-all;
107 | hyphens: auto;
108 | }
109 |
--------------------------------------------------------------------------------
/source/javascripts/lib/_jquery.highlight.js:
--------------------------------------------------------------------------------
1 | /*
2 | * jQuery Highlight plugin
3 | *
4 | * Based on highlight v3 by Johann Burkard
5 | * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
6 | *
7 | * Code a little bit refactored and cleaned (in my humble opinion).
8 | * Most important changes:
9 | * - has an option to highlight only entire words (wordsOnly - false by default),
10 | * - has an option to be case sensitive (caseSensitive - false by default)
11 | * - highlight element tag and class names can be specified in options
12 | *
13 | * Usage:
14 | * // wrap every occurrance of text 'lorem' in content
15 | * // with (default options)
16 | * $('#content').highlight('lorem');
17 | *
18 | * // search for and highlight more terms at once
19 | * // so you can save some time on traversing DOM
20 | * $('#content').highlight(['lorem', 'ipsum']);
21 | * $('#content').highlight('lorem ipsum');
22 | *
23 | * // search only for entire word 'lorem'
24 | * $('#content').highlight('lorem', { wordsOnly: true });
25 | *
26 | * // don't ignore case during search of term 'lorem'
27 | * $('#content').highlight('lorem', { caseSensitive: true });
28 | *
29 | * // wrap every occurrance of term 'ipsum' in content
30 | * // with
31 | * $('#content').highlight('ipsum', { element: 'em', className: 'important' });
32 | *
33 | * // remove default highlight
34 | * $('#content').unhighlight();
35 | *
36 | * // remove custom highlight
37 | * $('#content').unhighlight({ element: 'em', className: 'important' });
38 | *
39 | *
40 | * Copyright (c) 2009 Bartek Szopka
41 | *
42 | * Licensed under MIT license.
43 | *
44 | */
45 |
46 | jQuery.extend({
47 | highlight: function (node, re, nodeName, className) {
48 | if (node.nodeType === 3) {
49 | var match = node.data.match(re);
50 | if (match) {
51 | var highlight = document.createElement(nodeName || 'span');
52 | highlight.className = className || 'highlight';
53 | var wordNode = node.splitText(match.index);
54 | wordNode.splitText(match[0].length);
55 | var wordClone = wordNode.cloneNode(true);
56 | highlight.appendChild(wordClone);
57 | wordNode.parentNode.replaceChild(highlight, wordNode);
58 | return 1; //skip added node in parent
59 | }
60 | } else if ((node.nodeType === 1 && node.childNodes) && // only element nodes that have children
61 | !/(script|style)/i.test(node.tagName) && // ignore script and style nodes
62 | !(node.tagName === nodeName.toUpperCase() && node.className === className)) { // skip if already highlighted
63 | for (var i = 0; i < node.childNodes.length; i++) {
64 | i += jQuery.highlight(node.childNodes[i], re, nodeName, className);
65 | }
66 | }
67 | return 0;
68 | }
69 | });
70 |
71 | jQuery.fn.unhighlight = function (options) {
72 | var settings = { className: 'highlight', element: 'span' };
73 | jQuery.extend(settings, options);
74 |
75 | return this.find(settings.element + "." + settings.className).each(function () {
76 | var parent = this.parentNode;
77 | parent.replaceChild(this.firstChild, this);
78 | parent.normalize();
79 | }).end();
80 | };
81 |
82 | jQuery.fn.highlight = function (words, options) {
83 | var settings = { className: 'highlight', element: 'span', caseSensitive: false, wordsOnly: false };
84 | jQuery.extend(settings, options);
85 |
86 | if (words.constructor === String) {
87 | words = [words];
88 | }
89 | words = jQuery.grep(words, function(word, i){
90 | return word != '';
91 | });
92 | words = jQuery.map(words, function(word, i) {
93 | return word.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
94 | });
95 | if (words.length == 0) { return this; };
96 |
97 | var flag = settings.caseSensitive ? "" : "i";
98 | var pattern = "(" + words.join("|") + ")";
99 | if (settings.wordsOnly) {
100 | pattern = "\\b" + pattern + "\\b";
101 | }
102 | var re = new RegExp(pattern, flag);
103 |
104 | return this.each(function () {
105 | jQuery.highlight(this, re, settings.element, settings.className);
106 | });
107 | };
108 |
109 |
--------------------------------------------------------------------------------
/source/includes/_other.md:
--------------------------------------------------------------------------------
1 | # Other
2 | Edit on GitHub
3 |
4 | # Multiple sheets
5 | ```shell
6 | # Get whole spreadsheet from sheet named Sheet2
7 | curl "https://sheetsu.com/apis/v1.0/020b2c0f/sheets/Sheet2"
8 | ```
9 |
10 | ```shell
11 | # Adds single row to sheet named "Sheet2"
12 | curl "https://sheetsu.com/apis/v1.0/020b2c0f/sheets/Sheet2" \
13 | -X POST \
14 | -H "Content-Type: application/json" \
15 | -d '{ "foo": "6", "another column": "quux" }'
16 | ```
17 |
18 | ```ruby
19 | require 'sheetsu'
20 | sheetsu = Sheetsu::Client.new("020b2c0f")
21 | ```
22 |
23 | ```ruby
24 | # Get whole spreadsheet from sheet named Sheet2
25 | sheetsu.read(sheet: "Sheet2")
26 | ```
27 |
28 | ```ruby
29 | # Adds single row to sheet named "Sheet2"
30 | sheetsu.create({ "foo" => "bar", "another column" => "quux" }, "Sheet2")
31 | ```
32 |
33 | By default, always the first sheet (aka worksheet aka tab) is accessed. To access other sheets within a spreadsheet add `/sheets/{sheet_name}` path to the URL if using cURL, or pass appropriate param when using a lib.
34 |
35 | # Authentication
36 | ```shell
37 | curl "https://sheetsu.com/apis/v1.0/020b2c0f" \
38 | -u 'your_api_key:your_api_secret'
39 | ```
40 |
41 | ```ruby
42 | # Create new client object with HTTP Basic Auth keys
43 | sheetsu = Sheetsu::Client.new(
44 | "020b2c0f",
45 | api_key: "YOUR_API_KEY",
46 | api_secret: "YOUR_API_SECRET"
47 | )
48 | ```
49 |
50 | You can secure your API with HTTP Basic authentication. It can be turned on in the API settings.
51 |
52 | You have to send `api_key` and `api_secret` when you have authentication turned on.
53 |
54 | # Creating API programmatically
55 |
56 | ```shell
57 | # Creates new API
58 | curl "https://sheetsu.com/apis/v1.0/api_sheets" \
59 | -X POST \
60 | -H "Content-Type: application/json" \
61 | -d '{ "email": "your@email.com", "api_key": "api_key", "google_spreadsheet_url": "your_doc_url" }'
62 | ```
63 |
64 | API can be created by sending `POST` request to `https://sheetsu.com/apis/v1.0/api_sheets`. This feature is not available in all plans - check [pricing page](https://sheetsu.com/pricing) to know more.
65 | Please contact
66 | support
67 | to get your `api_key`.
68 |
69 | ## Assigning permissions to an API
70 | While creating new API, you can assign read/write permission as well as set up authentication for the API. By default, all permissions are set to `true`.
71 |
72 | ```shell
73 | # Creates new API with HTTP Basic Auth
74 | curl "https://sheetsu.com/apis/v1.0/api_sheets" \
75 | -X POST \
76 | -H "Content-Type: application/json" \
77 | -d '{ "email": "your@email.com", "api_key": "api_key", "google_spreadsheet_url": "your_doc_url", authenticate: true }'
78 | ```
79 |
80 | ```shell
81 | # Creates new API with only write permission enabled
82 | curl "https://sheetsu.com/apis/v1.0/api_sheets" \
83 | -X POST \
84 | -H "Content-Type: application/json" \
85 | -d '{ "email": "your@email.com", "api_key": "api_key", "google_spreadsheet_url": "your_doc_url", can_create: true, can_read: false, can_update: false, can_delete: false }'
86 | ```
87 |
88 | # Rate Limits
89 | Every API has a rate limit. You can check rate limitś for APIs on the [pricing page](https://sheetsu.com/pricing). After hitting the limit for the particular API, you receive `429 Rate limit exceeded` status code.
90 |
91 | # HTTP Status Codes
92 | Every response from the API is a JSON encoded string with a significant HTTP status code.
93 |
94 | Code | Description
95 | -----|------------
96 | `200 OK` | Standard response for successful GET, PUT and PATCH requests
97 | `201 Created` | Successful response for POST requests
98 | `204 No Content` | Successful response for DELETE requests
99 | `400 Bad Request` | Error response when creating (`POST`) or updating (`PUT`, `PATCH`) row(s)
100 | `401 Unauthorized` | Error response when wrong authorization credentials provided
101 | `402 Payment Required` | Returned if pro feature ([multiple sheets](#multiple-sheets)) is tried to be accessed from free account
102 | `403 Forbidden` | Error response when action is forbidden by the user (API owner)
103 | `404 No such route` | Error response when route doesn't exist
104 | `429 Rate limit exceeded` | Error response when API hits quota exceeded
105 | `500 Server error` |
106 |
107 | Each API URL has an `id`, which identifies it. It is part of the URL which is after `https://sheetsu.com/apis/v1.0/`.
108 |
--------------------------------------------------------------------------------
/font-selection.json:
--------------------------------------------------------------------------------
1 | {
2 | "IcoMoonType": "selection",
3 | "icons": [
4 | {
5 | "icon": {
6 | "paths": [
7 | "M438.857 73.143q119.429 0 220.286 58.857t159.714 159.714 58.857 220.286-58.857 220.286-159.714 159.714-220.286 58.857-220.286-58.857-159.714-159.714-58.857-220.286 58.857-220.286 159.714-159.714 220.286-58.857zM512 785.714v-108.571q0-8-5.143-13.429t-12.571-5.429h-109.714q-7.429 0-13.143 5.714t-5.714 13.143v108.571q0 7.429 5.714 13.143t13.143 5.714h109.714q7.429 0 12.571-5.429t5.143-13.429zM510.857 589.143l10.286-354.857q0-6.857-5.714-10.286-5.714-4.571-13.714-4.571h-125.714q-8 0-13.714 4.571-5.714 3.429-5.714 10.286l9.714 354.857q0 5.714 5.714 10t13.714 4.286h105.714q8 0 13.429-4.286t6-10z"
8 | ],
9 | "attrs": [],
10 | "isMulticolor": false,
11 | "tags": [
12 | "exclamation-circle"
13 | ],
14 | "defaultCode": 61546,
15 | "grid": 14
16 | },
17 | "attrs": [],
18 | "properties": {
19 | "id": 100,
20 | "order": 4,
21 | "prevSize": 28,
22 | "code": 58880,
23 | "name": "exclamation-sign",
24 | "ligatures": ""
25 | },
26 | "setIdx": 0,
27 | "iconIdx": 0
28 | },
29 | {
30 | "icon": {
31 | "paths": [
32 | "M585.143 786.286v-91.429q0-8-5.143-13.143t-13.143-5.143h-54.857v-292.571q0-8-5.143-13.143t-13.143-5.143h-182.857q-8 0-13.143 5.143t-5.143 13.143v91.429q0 8 5.143 13.143t13.143 5.143h54.857v182.857h-54.857q-8 0-13.143 5.143t-5.143 13.143v91.429q0 8 5.143 13.143t13.143 5.143h256q8 0 13.143-5.143t5.143-13.143zM512 274.286v-91.429q0-8-5.143-13.143t-13.143-5.143h-109.714q-8 0-13.143 5.143t-5.143 13.143v91.429q0 8 5.143 13.143t13.143 5.143h109.714q8 0 13.143-5.143t5.143-13.143zM877.714 512q0 119.429-58.857 220.286t-159.714 159.714-220.286 58.857-220.286-58.857-159.714-159.714-58.857-220.286 58.857-220.286 159.714-159.714 220.286-58.857 220.286 58.857 159.714 159.714 58.857 220.286z"
33 | ],
34 | "attrs": [],
35 | "isMulticolor": false,
36 | "tags": [
37 | "info-circle"
38 | ],
39 | "defaultCode": 61530,
40 | "grid": 14
41 | },
42 | "attrs": [],
43 | "properties": {
44 | "id": 85,
45 | "order": 3,
46 | "name": "info-sign",
47 | "prevSize": 28,
48 | "code": 58882
49 | },
50 | "setIdx": 0,
51 | "iconIdx": 2
52 | },
53 | {
54 | "icon": {
55 | "paths": [
56 | "M733.714 419.429q0-16-10.286-26.286l-52-51.429q-10.857-10.857-25.714-10.857t-25.714 10.857l-233.143 232.571-129.143-129.143q-10.857-10.857-25.714-10.857t-25.714 10.857l-52 51.429q-10.286 10.286-10.286 26.286 0 15.429 10.286 25.714l206.857 206.857q10.857 10.857 25.714 10.857 15.429 0 26.286-10.857l310.286-310.286q10.286-10.286 10.286-25.714zM877.714 512q0 119.429-58.857 220.286t-159.714 159.714-220.286 58.857-220.286-58.857-159.714-159.714-58.857-220.286 58.857-220.286 159.714-159.714 220.286-58.857 220.286 58.857 159.714 159.714 58.857 220.286z"
57 | ],
58 | "attrs": [],
59 | "isMulticolor": false,
60 | "tags": [
61 | "check-circle"
62 | ],
63 | "defaultCode": 61528,
64 | "grid": 14
65 | },
66 | "attrs": [],
67 | "properties": {
68 | "id": 83,
69 | "order": 9,
70 | "prevSize": 28,
71 | "code": 58886,
72 | "name": "ok-sign"
73 | },
74 | "setIdx": 0,
75 | "iconIdx": 6
76 | },
77 | {
78 | "icon": {
79 | "paths": [
80 | "M658.286 475.429q0-105.714-75.143-180.857t-180.857-75.143-180.857 75.143-75.143 180.857 75.143 180.857 180.857 75.143 180.857-75.143 75.143-180.857zM950.857 950.857q0 29.714-21.714 51.429t-51.429 21.714q-30.857 0-51.429-21.714l-196-195.429q-102.286 70.857-228 70.857-81.714 0-156.286-31.714t-128.571-85.714-85.714-128.571-31.714-156.286 31.714-156.286 85.714-128.571 128.571-85.714 156.286-31.714 156.286 31.714 128.571 85.714 85.714 128.571 31.714 156.286q0 125.714-70.857 228l196 196q21.143 21.143 21.143 51.429z"
81 | ],
82 | "width": 951,
83 | "attrs": [],
84 | "isMulticolor": false,
85 | "tags": [
86 | "search"
87 | ],
88 | "defaultCode": 61442,
89 | "grid": 14
90 | },
91 | "attrs": [],
92 | "properties": {
93 | "id": 2,
94 | "order": 1,
95 | "prevSize": 28,
96 | "code": 58887,
97 | "name": "icon-search"
98 | },
99 | "setIdx": 0,
100 | "iconIdx": 7
101 | }
102 | ],
103 | "height": 1024,
104 | "metadata": {
105 | "name": "slate",
106 | "license": "SIL OFL 1.1"
107 | },
108 | "preferences": {
109 | "showGlyphs": true,
110 | "showQuickUse": true,
111 | "showQuickUse2": true,
112 | "showSVGs": true,
113 | "fontPref": {
114 | "prefix": "icon-",
115 | "metadata": {
116 | "fontFamily": "slate",
117 | "majorVersion": 1,
118 | "minorVersion": 0,
119 | "description": "Based on FontAwesome",
120 | "license": "SIL OFL 1.1"
121 | },
122 | "metrics": {
123 | "emSize": 1024,
124 | "baseline": 6.25,
125 | "whitespace": 50
126 | },
127 | "resetPoint": 58880,
128 | "showSelector": false,
129 | "selector": "class",
130 | "classSelector": ".icon",
131 | "showMetrics": false,
132 | "showMetadata": true,
133 | "showVersion": true,
134 | "ie7": false
135 | },
136 | "imagePref": {
137 | "prefix": "icon-",
138 | "png": true,
139 | "useClassSelector": true,
140 | "color": 4473924,
141 | "bgColor": 16777215
142 | },
143 | "historySize": 100,
144 | "showCodes": true,
145 | "gridSize": 16,
146 | "showLiga": false
147 | }
148 | }
149 |
--------------------------------------------------------------------------------
/source/includes/_snippet.md:
--------------------------------------------------------------------------------
1 | # Snippet
2 | Edit on GitHub
3 |
4 | The snippet is our _"we are here for you"_ for all those, who don't want to play with any programming languages or development but want to have all the Sheetsu super powers on their websites.
5 |
6 | Snippet allows you to interact with a Google Spreadsheet from your website with just HTML.
7 |
8 | # Installation
9 | Add below code before closing `