Class: AwsAuditor::GoogleSheet

Inherits:
Object
  • Object
show all
Extended by:
GoogleWrapper
Defined in:
lib/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/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/aws_auditor/google_sheet.rb', line 7

def path
  @path
end

#sheetObject

Returns the value of attribute sheet.



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

def sheet
  @sheet
end

#worksheetObject

Returns the value of attribute worksheet.



7
8
9
# File 'lib/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/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)[0]
		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)[0]
		end
	else
		first_or_create(title)
	end
end

.delete_all_rows(worksheet) ⇒ Object



71
72
73
74
75
76
77
# File 'lib/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/aws_auditor/google_sheet.rb', line 23

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

.go_to_collection(directory) ⇒ Object

returns a collection object



53
54
55
56
57
58
# File 'lib/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[0]),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/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[0])
		go_to_subcollection(base,subs[1..-1])
	end
end

.worksheet(spreadsheet, title) ⇒ Object

returns a worksheet object



47
48
49
50
# File 'lib/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/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/aws_auditor/google_sheet.rb', line 18

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