googlesheets 0.1.0 → 0.2.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8943510443e9c7f239448ca1f51f24aef69623a55943cccd9cca909ed898fc0a
4
- data.tar.gz: 1af91f45355e465b6576c722a5fbc9a1cd2371dbd6706d76dd61a019c4e933e7
3
+ metadata.gz: d8f5d17077c83d17f62a0c18e129e1a1b88cfe1059606b22ca012b349b6ec682
4
+ data.tar.gz: 34029b089e78a8e32cd1572971c248e5ff05d4e1e9d772754df26bfd5d6a3461
5
5
  SHA512:
6
- metadata.gz: 6d149d61718cf93b2a4e8c373a4cbe30b9f462591b1a603a26a5a455cc14ea03742f65125b9ca61ef5d83213530f958304c69eb501a2f1c00ab17912156b8a8a
7
- data.tar.gz: a3d4744b72f90b29bbc7c9fa85c27f81b7f5bb0c4e317f454d48ab856d9cba83af8be5f533ea550f7f2c55f1a43bc8af7ec6f51c016c0e7dc953c0de58b92132
6
+ metadata.gz: bd7ff047f1181c713132bb09b6ac4b876c681b8fc6c89d657e2d2cf0a63aa2dc3bef9f973f8f92419f89035eb290d9b2f8a47ef020ad29326532eec2a41de57c
7
+ data.tar.gz: 1bb3e0cc4fec63b073698ff2a33638d70e04a008a92a9d067d0f2c6de7d6b57a8e89caac3d9a83951cea41ace67f59eed0e1f557b83714ddf8e1e8f1ab863f82
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6
1
+ 2.6.5
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
1
  # googlesheets
2
2
 
3
3
  Ruby gem for Google Sheets API
4
+
5
+ ### NOTE: gem install google-api-client
data/googlesheets.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "googlesheets"
5
- s.version = "0.1.0"
5
+ s.version = "0.2.3"
6
6
  s.author = "Steve Shreeve"
7
7
  s.email = "steve.shreeve@gmail.com"
8
8
  s.summary = "Ruby gem for Google Sheets"
data/lib/googlesheets.rb CHANGED
@@ -8,11 +8,13 @@ module Enumerable
8
8
  end
9
9
  end
10
10
 
11
+ # https://googleapis.dev/ruby/google-api-client/latest/Google/Apis/SheetsV4/Request.html
12
+
11
13
  class GoogleSheets
12
14
  attr_accessor :api
13
15
 
14
16
  def initialize(ssid, **opts)
15
- @ssid = ssid
17
+ @ssid = ssid =~ /^https?:/ ? ssid.split('/')[5] : ssid
16
18
 
17
19
  @json = opts[:credentials] || 'credentials.json'
18
20
  @yaml = opts[:token ] || 'token.yaml'
@@ -70,6 +72,19 @@ class GoogleSheets
70
72
  end
71
73
  end
72
74
 
75
+ def filter_criteria(hash)
76
+ hash.inject({}) do |h, (k,v)|
77
+ l = Array(v)
78
+ h[biject(k.to_s) - 1] = {
79
+ condition: {
80
+ type: "TEXT_EQ",
81
+ values: l.map {|e| { user_entered_value: e} },
82
+ }
83
+ }
84
+ h
85
+ end
86
+ end
87
+
73
88
  def range(area)
74
89
  sh, rc = area.split('!', 2); rc, sh = sh, nil if sh.nil?
75
90
  as, ae = rc.split(':', 2); ae ||= as
@@ -119,6 +134,26 @@ class GoogleSheets
119
134
  end
120
135
  end
121
136
 
137
+ def resolve_sheet(area)
138
+ area.sub(/^(#\d+)(?=!)/) {|num| sheet_name(num)}
139
+ end
140
+
141
+ def sheet_rename(pick, name=nil)
142
+ shid = sheet_id(pick)
143
+ name ||= yield(sheet_name(shid)) if block_given?
144
+
145
+ reqs = []
146
+ reqs.push(update_sheet_properties: {
147
+ properties: {
148
+ sheet_id: shid,
149
+ title: name,
150
+ },
151
+ fields: 'title',
152
+ })
153
+ resp = api.batch_update_spreadsheet(@ssid, { requests: reqs }, {})
154
+ true
155
+ end
156
+
122
157
  def sheet_color(pick, color=nil) # NOTE: ignores alpha
123
158
  reqs = []
124
159
  reqs.push(update_sheet_properties: {
@@ -132,16 +167,19 @@ class GoogleSheets
132
167
  true
133
168
  end
134
169
 
135
- def sheet_filter(area)
170
+ def sheet_filter(area, want=nil)
171
+ area = resolve_sheet(area)
136
172
  range = range(area)
173
+ criteria = filter_criteria(want) if want
137
174
  reqs = []
138
175
  reqs.push(clear_basic_filter: { sheet_id: range[:sheet_id] })
139
- reqs.push(set_basic_filter: { filter: { range: range } })
176
+ reqs.push(set_basic_filter: { filter: { range: range, criteria: criteria}.compact })
140
177
  resp = api.batch_update_spreadsheet(@ssid, { requests: reqs }, {})
141
178
  true
142
179
  end
143
180
 
144
181
  def sheet_format(area, pattern)
182
+ area = resolve_sheet(area)
145
183
  reqs = []
146
184
  reqs.push(repeat_cell: {
147
185
  range: range(area),
@@ -160,15 +198,19 @@ class GoogleSheets
160
198
  end
161
199
 
162
200
  def sheet_clear(area)
201
+ area = resolve_sheet(area)
202
+ area.sub!(/^(#\d+)(?=!)/) {|num| sheet_name(num)}
163
203
  api.clear_values(@ssid, area)
164
204
  end
165
205
 
166
206
  def sheet_read(area)
207
+ area = resolve_sheet(area)
208
+ area.sub!(/^(#\d+)(?=!)/) {|num| sheet_name(num)}
167
209
  api.get_spreadsheet_values(@ssid, area).values
168
210
  end
169
211
 
170
212
  def sheet_save(area, rows, log=false)
171
- area.sub!(/^(#\d+)(?=!)/) {|num| sheet_name(num)}
213
+ area = resolve_sheet(area)
172
214
  gasv = Google::Apis::SheetsV4::ValueRange.new(range: area, values: rows)
173
215
  done = api.update_spreadsheet_value(@ssid, area, gasv, value_input_option: "USER_ENTERED")
174
216
  puts "#{done.updated_cells} cells updated." if log
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: googlesheets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Shreeve
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-10 00:00:00.000000000 Z
11
+ date: 2021-09-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: This gem allows easy access to Google Sheets API V4.
14
14
  email: steve.shreeve@gmail.com
@@ -26,7 +26,7 @@ homepage: https://github.com/shreeve/googlesheets
26
26
  licenses:
27
27
  - MIT
28
28
  metadata: {}
29
- post_install_message:
29
+ post_install_message:
30
30
  rdoc_options: []
31
31
  require_paths:
32
32
  - lib
@@ -41,8 +41,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
41
41
  - !ruby/object:Gem::Version
42
42
  version: '0'
43
43
  requirements: []
44
- rubygems_version: 3.1.2
45
- signing_key:
44
+ rubygems_version: 3.2.16
45
+ signing_key:
46
46
  specification_version: 4
47
47
  summary: Ruby gem for Google Sheets
48
48
  test_files: []