gnoso-spreadsheet_report 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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: