g_sheets 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/g_sheets.gemspec +1 -1
- data/lib/g_sheets.rb +1 -0
- data/lib/g_sheets/row.rb +6 -0
- data/lib/g_sheets/v4/row.rb +9 -0
- data/lib/g_sheets/v4/session.rb +7 -0
- data/lib/g_sheets/v4/sheet.rb +14 -0
- data/lib/g_sheets/version.rb +1 -1
- metadata +7 -8
- data/lib/g_sheets/v3/session.rb +0 -33
- data/lib/g_sheets/v3/spread_sheet.rb +0 -47
- data/lib/g_sheets/v3/work_sheet.rb +0 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c85033de590976ff3bc361972aa2e635e13da8e4
|
4
|
+
data.tar.gz: 29435f9306488155d643f2d234f3a527782c3b60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4aff6638a034c4f1c20f1d9cc216f8066c8122465e20a3b74bd0d511445116903b5a8a1c128498070f5ef33815b0250496492c9b5955b6ae86ad83aad68a1611
|
7
|
+
data.tar.gz: 800c0ab8d9a3a2c0cc10057c57652c7156ac9ac24cb1864cb4534c643a2b79c320e35afc8018999543047f02dc93ff8fc7777c53bc93586e55a26434a57dac5f
|
data/.gitignore
CHANGED
data/g_sheets.gemspec
CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
30
30
|
spec.require_paths = ["lib"]
|
31
31
|
|
32
|
-
spec.add_development_dependency "bundler", "~> 1
|
32
|
+
spec.add_development_dependency "bundler", "~> 1"
|
33
33
|
spec.add_development_dependency "rake", "~> 10.0"
|
34
34
|
spec.add_development_dependency "rspec", "~> 3.0"
|
35
35
|
|
data/lib/g_sheets.rb
CHANGED
data/lib/g_sheets/row.rb
ADDED
data/lib/g_sheets/v4/session.rb
CHANGED
data/lib/g_sheets/v4/sheet.rb
CHANGED
@@ -15,6 +15,20 @@ module GSheets
|
|
15
15
|
row: row
|
16
16
|
)
|
17
17
|
end
|
18
|
+
|
19
|
+
def rows
|
20
|
+
all_rows = @session.get_spreadsheet_values(
|
21
|
+
id: @spread_sheet.id,
|
22
|
+
sheet_name: @sheet_name
|
23
|
+
).values
|
24
|
+
|
25
|
+
headers = all_rows[0]
|
26
|
+
all_rows.drop(1).map { |row|
|
27
|
+
row_as_hash = {}
|
28
|
+
headers.zip(row) { |k, v| row_as_hash[k] = v }
|
29
|
+
Row.new(row_as_hash)
|
30
|
+
}
|
31
|
+
end
|
18
32
|
end
|
19
33
|
end
|
20
34
|
end
|
data/lib/g_sheets/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: g_sheets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- parasquid
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1
|
19
|
+
version: '1'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1
|
26
|
+
version: '1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -169,12 +169,11 @@ files:
|
|
169
169
|
- g_sheets.gemspec
|
170
170
|
- lib/g_sheets.rb
|
171
171
|
- lib/g_sheets/oauth/offline.rb
|
172
|
+
- lib/g_sheets/row.rb
|
172
173
|
- lib/g_sheets/session.rb
|
173
174
|
- lib/g_sheets/sheet.rb
|
174
175
|
- lib/g_sheets/spread_sheet.rb
|
175
|
-
- lib/g_sheets/
|
176
|
-
- lib/g_sheets/v3/spread_sheet.rb
|
177
|
-
- lib/g_sheets/v3/work_sheet.rb
|
176
|
+
- lib/g_sheets/v4/row.rb
|
178
177
|
- lib/g_sheets/v4/session.rb
|
179
178
|
- lib/g_sheets/v4/sheet.rb
|
180
179
|
- lib/g_sheets/v4/spread_sheet.rb
|
@@ -198,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
198
197
|
version: '0'
|
199
198
|
requirements: []
|
200
199
|
rubyforge_project:
|
201
|
-
rubygems_version: 2.
|
200
|
+
rubygems_version: 2.5.1
|
202
201
|
signing_key:
|
203
202
|
specification_version: 4
|
204
203
|
summary: Database like API for Google Spreadsheets
|
data/lib/g_sheets/v3/session.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
module GSheets
|
2
|
-
module V3
|
3
|
-
class Session
|
4
|
-
def initialize(access_token:, http_client: Faraday, alt: "json")
|
5
|
-
@access_token = access_token
|
6
|
-
@alt = alt
|
7
|
-
@http_client = http_client
|
8
|
-
end
|
9
|
-
|
10
|
-
def get_cells(id:, grid_id: "default", options:[])
|
11
|
-
connection.get "cells/#{id}/#{grid_id}/private/full?#{options.join('&')}"
|
12
|
-
end
|
13
|
-
|
14
|
-
def get_list(id:, grid_id: "default", options:[])
|
15
|
-
connection.get "list/#{id}/#{grid_id}/private/full?#{options.join('&')}"
|
16
|
-
end
|
17
|
-
|
18
|
-
def get_worksheets(id:)
|
19
|
-
connection.get "worksheets/#{id}/private/full"
|
20
|
-
end
|
21
|
-
|
22
|
-
def connection
|
23
|
-
@http_client.new "#{sheets_api_endpoint}?access_token=#{@access_token}&alt=#{@alt}"
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
def sheets_api_endpoint
|
29
|
-
"https://spreadsheets.google.com/feeds"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
module GSheets
|
2
|
-
module V3
|
3
|
-
class SpreadSheet
|
4
|
-
def initialize(session:, id:)
|
5
|
-
@id = id
|
6
|
-
@session = session
|
7
|
-
end
|
8
|
-
|
9
|
-
def worksheets
|
10
|
-
list_work_sheets.keys.map do |title|
|
11
|
-
WorkSheet.new(session: @session, id: @id, grid_id: list_work_sheets[title])
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def list_work_sheets
|
18
|
-
result = {}
|
19
|
-
document["feed"]["entry"].each do |e|
|
20
|
-
result[get_title(e)] = get_grid_id_from_link(e["link"])
|
21
|
-
end
|
22
|
-
result
|
23
|
-
end
|
24
|
-
|
25
|
-
def document
|
26
|
-
JSON.parse(@session.get_worksheets(id: @id).body)
|
27
|
-
end
|
28
|
-
|
29
|
-
def get_title(entry)
|
30
|
-
entry["title"]["$t"]
|
31
|
-
end
|
32
|
-
|
33
|
-
def get_self_link(link)
|
34
|
-
link.select { |l| l["rel"] == "self" }.first["href"]
|
35
|
-
end
|
36
|
-
|
37
|
-
def get_grid_id(self_link)
|
38
|
-
self_link.split("/").last
|
39
|
-
end
|
40
|
-
|
41
|
-
def get_grid_id_from_link(link)
|
42
|
-
self_link = get_self_link(link)
|
43
|
-
get_grid_id(self_link)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
module GSheets
|
2
|
-
module V3
|
3
|
-
class WorkSheet
|
4
|
-
def initialize(session:, grid_id: " default", id:)
|
5
|
-
@grid_id = grid_id
|
6
|
-
@session = session
|
7
|
-
@id = id
|
8
|
-
end
|
9
|
-
|
10
|
-
def headers
|
11
|
-
cells_first_row["feed"]["entry"].map {|e| e["content"]["$t"]}
|
12
|
-
end
|
13
|
-
|
14
|
-
def rows
|
15
|
-
data_list = worksheet_as_list["feed"]["entry"]
|
16
|
-
list = data_list.map {|entry|
|
17
|
-
[
|
18
|
-
"title: #{entry['title']['$t']}",
|
19
|
-
entry["content"]["$t"]
|
20
|
-
].join(", ")
|
21
|
-
}
|
22
|
-
|
23
|
-
result = []
|
24
|
-
list.each do |l|
|
25
|
-
row = {}
|
26
|
-
l.split(",").each do |elem|
|
27
|
-
e = elem.split(":")
|
28
|
-
row[e.first.strip.freeze] = e.last.strip.freeze
|
29
|
-
end
|
30
|
-
result << row
|
31
|
-
end
|
32
|
-
result.map(&:values)
|
33
|
-
end
|
34
|
-
|
35
|
-
private
|
36
|
-
|
37
|
-
def cells_first_row
|
38
|
-
JSON.parse(@session.get_cells(id: @id, grid_id: @grid_id, options: header_row_options).body)
|
39
|
-
end
|
40
|
-
|
41
|
-
def worksheet_as_list
|
42
|
-
JSON.parse(@session.get_list(id: @id, grid_id: @grid_id).body)
|
43
|
-
end
|
44
|
-
|
45
|
-
def header_row_options
|
46
|
-
["min-row=1", "max-row=1"]
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|