commondream-google-spreadsheet-ruby 0.0.4 → 0.0.5

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.
Files changed (2) hide show
  1. data/lib/google_spreadsheet.rb +46 -33
  2. metadata +3 -2
@@ -481,42 +481,55 @@ module GoogleSpreadsheet
481
481
  end
482
482
 
483
483
  # Updates cell values using batch operation.
484
- xml = <<-"EOS"
485
- <feed xmlns="http://www.w3.org/2005/Atom"
486
- xmlns:batch="http://schemas.google.com/gdata/batch"
487
- xmlns:gs="http://schemas.google.com/spreadsheets/2006">
488
- <id>#{h(@cells_feed_url)}</id>
489
- EOS
490
- for row, col in @modified
491
- value = @cells[[row, col]]
492
- entry = cell_entries[[row, col]]
493
- id = entry.search("id").text
494
- edit_url = entry.search("link[@rel='edit']")[0]["href"]
484
+ cells = @modified.size
485
+ current_cell = 0
486
+
487
+ while current_cell < cells
488
+ batch_count = 0
489
+ xml = <<-"EOS"
490
+ <feed xmlns="http://www.w3.org/2005/Atom"
491
+ xmlns:batch="http://schemas.google.com/gdata/batch"
492
+ xmlns:gs="http://schemas.google.com/spreadsheets/2006">
493
+ <id>#{h(@cells_feed_url)}</id>
494
+ EOS
495
+
496
+ while batch_count <= 500
497
+ row,col = @modified[current_cell]
498
+ value = @cells[[row, col]]
499
+ entry = cell_entries[[row, col]]
500
+ id = entry.search("id").text
501
+ edit_url = entry.search("link[@rel='edit']")[0]["href"]
502
+ xml << <<-"EOS"
503
+ <entry>
504
+ <batch:id>#{h(row)},#{h(col)}</batch:id>
505
+ <batch:operation type="update"/>
506
+ <id>#{h(id)}</id>
507
+ <link rel="edit" type="application/atom+xml"
508
+ href="#{h(edit_url)}"/>
509
+ <gs:cell row="#{h(row)}" col="#{h(col)}" inputValue="#{h(value)}"/>
510
+ </entry>
511
+ EOS
512
+
513
+ # close each batch out at 500 cells
514
+ current_cell++
515
+ batch_count++
516
+ end
517
+
495
518
  xml << <<-"EOS"
496
- <entry>
497
- <batch:id>#{h(row)},#{h(col)}</batch:id>
498
- <batch:operation type="update"/>
499
- <id>#{h(id)}</id>
500
- <link rel="edit" type="application/atom+xml"
501
- href="#{h(edit_url)}"/>
502
- <gs:cell row="#{h(row)}" col="#{h(col)}" inputValue="#{h(value)}"/>
503
- </entry>
519
+ </feed>
504
520
  EOS
505
- end
506
- xml << <<-"EOS"
507
- </feed>
508
- EOS
509
521
 
510
- result = @session.post("#{@cells_feed_url}/batch", xml)
511
- for entry in result.search("atom:entry")
512
- interrupted = entry.search("batch:interrupted")[0]
513
- if interrupted
514
- raise(GoogleSpreadsheet::Error, "Update has failed: %s" %
515
- interrupted["reason"])
516
- end
517
- if !(entry.search("batch:status")[0]["code"] =~ /^2/)
518
- raise(GoogleSpreadsheet::Error, "Updating cell %s has failed: %s" %
519
- [entry.search("atom:id").text, entry.search("batch:status")[0]["reason"]])
522
+ result = @session.post("#{@cells_feed_url}/batch", xml)
523
+ for entry in result.search("atom:entry")
524
+ interrupted = entry.search("batch:interrupted")[0]
525
+ if interrupted
526
+ raise(GoogleSpreadsheet::Error, "Update has failed: %s" %
527
+ interrupted["reason"])
528
+ end
529
+ if !(entry.search("batch:status")[0]["code"] =~ /^2/)
530
+ raise(GoogleSpreadsheet::Error, "Updating cell %s has failed: %s" %
531
+ [entry.search("atom:id").text, entry.search("batch:status")[0]["reason"]])
532
+ end
520
533
  end
521
534
  end
522
535
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: commondream-google-spreadsheet-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroshi Ichikawa
@@ -36,6 +36,7 @@ files:
36
36
  - lib/google_spreadsheet.rb
37
37
  has_rdoc: true
38
38
  homepage: http://github.com/gimite/google-spreadsheet-ruby/tree/master
39
+ licenses:
39
40
  post_install_message:
40
41
  rdoc_options:
41
42
  - --main
@@ -57,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
57
58
  requirements: []
58
59
 
59
60
  rubyforge_project:
60
- rubygems_version: 1.2.0
61
+ rubygems_version: 1.3.5
61
62
  signing_key:
62
63
  specification_version: 2
63
64
  summary: This is a library to read/write Google Spreadsheet.