gimite-google-spreadsheet-ruby 0.0.1 → 0.0.2
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.
- data/README.txt +26 -1
- data/lib/google_spreadsheet.rb +29 -8
- metadata +2 -1
data/README.txt
CHANGED
@@ -3,7 +3,8 @@ This is a library to read/write Google Spreadsheet.
|
|
3
3
|
|
4
4
|
= How to install
|
5
5
|
|
6
|
-
|
6
|
+
$ gem sources -a http://gems.github.com
|
7
|
+
$ sudo gem install gimite-google-spreadsheet-ruby
|
7
8
|
|
8
9
|
|
9
10
|
= How to use
|
@@ -27,5 +28,29 @@ Example:
|
|
27
28
|
ws[2, 2] = "bar"
|
28
29
|
ws.save()
|
29
30
|
|
31
|
+
# Dumps all cells.
|
32
|
+
for row in 1..ws.num_rows
|
33
|
+
for col in 1..ws.num_cols
|
34
|
+
p ws[row, col]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# Yet another way to do so.
|
39
|
+
p ws.rows #==> [["fuga", ""], ["foo", "bar]]
|
40
|
+
|
30
41
|
# Reloads the worksheet to get changes by other clients.
|
31
42
|
ws.reload()
|
43
|
+
|
44
|
+
API document: http://gimite.net/gimite/rubymess/google-spreadsheet-ruby/
|
45
|
+
|
46
|
+
|
47
|
+
= Source code
|
48
|
+
|
49
|
+
http://github.com/gimite/google-spreadsheet-ruby/tree/master
|
50
|
+
|
51
|
+
The license of this source is "New BSD Licence"
|
52
|
+
|
53
|
+
|
54
|
+
= Author
|
55
|
+
|
56
|
+
Hiroshi Ichikawa - http://gimite.net/en/index.php?Contact
|
data/lib/google_spreadsheet.rb
CHANGED
@@ -119,7 +119,12 @@ module GoogleSpreadsheet
|
|
119
119
|
attr_reader(:auth_token)
|
120
120
|
|
121
121
|
def get(url) #:nodoc:
|
122
|
-
|
122
|
+
begin
|
123
|
+
response = open(url, self.http_header){ |f| f.read() }
|
124
|
+
rescue OpenURI::HTTPError => ex
|
125
|
+
raise(GoogleSpreadsheet::Error, "Error #{ex.message} for GET #{url}: " +
|
126
|
+
ex.io.read())
|
127
|
+
end
|
123
128
|
return Hpricot.XML(response)
|
124
129
|
end
|
125
130
|
|
@@ -302,6 +307,17 @@ module GoogleSpreadsheet
|
|
302
307
|
return @cells
|
303
308
|
end
|
304
309
|
|
310
|
+
# An array of spreadsheet rows. Each row contains an array of
|
311
|
+
# columns. Note that resulting array is 0-origin so
|
312
|
+
# worksheet.rows[0][0] == worksheet[1, 1].
|
313
|
+
def rows
|
314
|
+
nc = self.num_cols
|
315
|
+
result = (1..self.num_rows).map() do |row|
|
316
|
+
(1..nc).map(){ |col| self[row, col] }.freeze()
|
317
|
+
end
|
318
|
+
return result.freeze()
|
319
|
+
end
|
320
|
+
|
305
321
|
# Reloads content of the worksheets from the server.
|
306
322
|
# Note that changes you made by []= is discarded if you haven't called save().
|
307
323
|
def reload()
|
@@ -337,9 +353,9 @@ module GoogleSpreadsheet
|
|
337
353
|
|
338
354
|
# Updates cell values using batch operation.
|
339
355
|
xml = <<-"EOS"
|
340
|
-
<feed xmlns=
|
341
|
-
xmlns:batch=
|
342
|
-
xmlns:gs=
|
356
|
+
<feed xmlns="http://www.w3.org/2005/Atom"
|
357
|
+
xmlns:batch="http://schemas.google.com/gdata/batch"
|
358
|
+
xmlns:gs="http://schemas.google.com/spreadsheets/2006">
|
343
359
|
<id>#{h(@cells_feed_url)}</id>
|
344
360
|
EOS
|
345
361
|
for row, col in @modified
|
@@ -350,11 +366,11 @@ module GoogleSpreadsheet
|
|
350
366
|
xml << <<-"EOS"
|
351
367
|
<entry>
|
352
368
|
<batch:id>#{h(row)},#{h(col)}</batch:id>
|
353
|
-
<batch:operation type=
|
369
|
+
<batch:operation type="update"/>
|
354
370
|
<id>#{h(id)}</id>
|
355
|
-
<link rel=
|
356
|
-
href=
|
357
|
-
<gs:cell row=
|
371
|
+
<link rel="edit" type="application/atom+xml"
|
372
|
+
href="#{h(edit_url)}"/>
|
373
|
+
<gs:cell row="#{h(row)}" col="#{h(col)}" inputValue="#{h(value)}"/>
|
358
374
|
</entry>
|
359
375
|
EOS
|
360
376
|
end
|
@@ -363,6 +379,11 @@ module GoogleSpreadsheet
|
|
363
379
|
EOS
|
364
380
|
result = @session.post("#{@cells_feed_url}/batch", xml)
|
365
381
|
for entry in result.search("atom:entry")
|
382
|
+
interrupted = entry.search("batch:interrupted")[0]
|
383
|
+
if interrupted
|
384
|
+
raise(GoogleSpreadsheet::Error, "Update has failed: %s" %
|
385
|
+
interrupted["reason"])
|
386
|
+
end
|
366
387
|
if !(entry.search("batch:status")[0]["code"] =~ /^2/)
|
367
388
|
raise(GoogleSpreadsheet::Error, "Updating cell %s has failed: %s" %
|
368
389
|
[entry.search("atom:id").text, entry.search("batch:status")[0]["reason"]])
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gimite-google-spreadsheet-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiroshi Ichikawa
|
@@ -14,6 +14,7 @@ default_executable:
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: hpricot
|
17
|
+
type: :development
|
17
18
|
version_requirement:
|
18
19
|
version_requirements: !ruby/object:Gem::Requirement
|
19
20
|
requirements:
|