Class: SportNginAwsAuditor::GoogleSheet

Inherits:
Object
  • Object
show all
Extended by:
GoogleWrapper
Defined in:
lib/sport_ngin_aws_auditor/google_sheet.rb

Instance Attribute Summary collapse

Attributes included from GoogleWrapper

#google

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(title, path, environment) ⇒ GoogleSheet

Returns a new instance of GoogleSheet.



8
9
10
11
# File 'lib/sport_ngin_aws_auditor/google_sheet.rb', line 8

def initialize(title, path, environment)
  @sheet = self.class.create_sheet(title, path)
  @worksheet = self.class.worksheet(sheet, environment)
end

Instance Attribute Details

#pathObject

Returns the value of attribute path.



7
8
9
# File 'lib/sport_ngin_aws_auditor/google_sheet.rb', line 7

def path
  @path
end

#sheetObject

Returns the value of attribute sheet.



7
8
9
# File 'lib/sport_ngin_aws_auditor/google_sheet.rb', line 7

def sheet
  @sheet
end

#worksheetObject

Returns the value of attribute worksheet.



7
8
9
# File 'lib/sport_ngin_aws_auditor/google_sheet.rb', line 7

def worksheet
  @worksheet
end

Class Method Details

.create_sheet(title, path) ⇒ Object

returns a spreadsheet object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/sport_ngin_aws_auditor/google_sheet.rb', line 29

def self.create_sheet(title, path)
  folder = go_to_collection(path) if path
  if folder
    spreadsheet = folder.files("title" => title, "title-exact" => true).first
    if spreadsheet
      return spreadsheet
    else
      file = first_or_create(title)
      folder.add(file)
      google.root_collection.remove(file)
      return folder.files("title" => title, "title-exact" => true).first
    end
  else
    first_or_create(title)
  end
end

.delete_all_rows(worksheet) ⇒ Object



71
72
73
74
75
76
77
# File 'lib/sport_ngin_aws_auditor/google_sheet.rb', line 71

def self.delete_all_rows(worksheet)
  worksheet.list.each do |row|
    row.clear
  end
  worksheet.save
  worksheet
end

.first_or_create(title) ⇒ Object



23
24
25
26
# File 'lib/sport_ngin_aws_auditor/google_sheet.rb', line 23

def self.first_or_create(title)
  spreadsheet = google.root_collection.files("title" => title, "title-exact" => true).first
  spreadsheet ? spreadsheet : google.create_spreadsheet(title)
end

.go_to_collection(directory) ⇒ Object

returns a collection object



53
54
55
56
57
58
# File 'lib/sport_ngin_aws_auditor/google_sheet.rb', line 53

def self.go_to_collection(directory)
  if directory
    path = directory.split('/')
    go_to_subcollection(google.collection_by_title(path.first),path[1..-1])
  end
end

.go_to_subcollection(base, subs) ⇒ Object

returns a collection object



61
62
63
64
65
66
67
68
69
# File 'lib/sport_ngin_aws_auditor/google_sheet.rb', line 61

def self.go_to_subcollection(base, subs)
  puts "Folder doesn't exist in specified path" and exit if base.nil?
  if subs.empty?
    return base
  else
    base = base.subcollection_by_title(subs.first)
    go_to_subcollection(base,subs[1..-1])
  end
end

.worksheet(spreadsheet, title) ⇒ Object

returns a worksheet object



47
48
49
50
# File 'lib/sport_ngin_aws_auditor/google_sheet.rb', line 47

def self.worksheet(spreadsheet, title)
  worksheet = spreadsheet.worksheet_by_title(title)
  worksheet ? delete_all_rows(worksheet) : spreadsheet.add_worksheet(title)
end

Instance Method Details

#write_header(header) ⇒ Object



13
14
15
16
# File 'lib/sport_ngin_aws_auditor/google_sheet.rb', line 13

def write_header(header)
  worksheet.list.keys = header.unshift('name')
  worksheet.save
end

#write_row(value_hash) ⇒ Object



18
19
20
21
# File 'lib/sport_ngin_aws_auditor/google_sheet.rb', line 18

def write_row(value_hash)
  worksheet.list.push(value_hash)
  worksheet.save
end