gnoso-spreadsheet_report 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/spreadsheet_report.rb +52 -0
  2. metadata +3 -3
@@ -0,0 +1,52 @@
1
+ require 'google_spreadsheet'
2
+
3
+ class SpreadsheetReport
4
+
5
+ def initialize(username, password, spreadsheet_key, &block)
6
+ @session = GoogleSpreadsheet.login(username, password)
7
+ @spreadsheet = @session.spreadsheet_by_key(spreadsheet_key)
8
+
9
+ yield(self)
10
+ end
11
+
12
+ def worksheet(name, query)
13
+ worksheet = @spreadsheet.worksheets.find { |ws| ws.title == name }
14
+
15
+ # create the worksheet if we didn't find it
16
+ if worksheet != nil
17
+ worksheet.delete
18
+ worksheet = nil
19
+ end
20
+
21
+ # run the query
22
+ result = ActiveRecord::Base.connection.select_all(query)
23
+
24
+ # resize the worksheet
25
+ rows = result.size + 1
26
+ keys = []
27
+ if result.size > 0
28
+ keys = result[0].keys
29
+ end
30
+ cols = keys.size
31
+ worksheet = @spreadsheet.add_worksheet(name, result.size + 1, keys.size)
32
+
33
+ # add the title cells
34
+ keys.each_with_index do |key, index|
35
+ worksheet[1, index + 1] = key
36
+ end
37
+
38
+ current_row = 2
39
+ result.each do |row_data|
40
+ keys.each_with_index do |key, index|
41
+ worksheet[current_row, index + 1] = row_data[key]
42
+ end
43
+ current_row += 1
44
+
45
+ if current_row % 250 == 0
46
+ worksheet.save
47
+ end
48
+ end
49
+
50
+ worksheet.save
51
+ end
52
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gnoso-spreadsheet_report
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
  - Gnoso, Inc.
@@ -30,8 +30,8 @@ extensions: []
30
30
 
31
31
  extra_rdoc_files: []
32
32
 
33
- files: []
34
-
33
+ files:
34
+ - lib/spreadsheet_report.rb
35
35
  has_rdoc: true
36
36
  homepage: http://www.gnoso.com
37
37
  licenses: