Class: GSMetrics::Worksheet

Inherits:
Object
  • Object
show all
Defined in:
lib/gsmetrics/gsmetrics.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(doc_title, worksheet_title, email, password) ⇒ Worksheet

Returns a new instance of Worksheet.



20
21
22
23
24
25
26
27
# File 'lib/gsmetrics/gsmetrics.rb', line 20

def initialize doc_title, worksheet_title, email, password
  @doc_title = doc_title
  @worksheet_title = worksheet_title
  @email = email
  @password = password
  @items = []
  @rows = []
end

Instance Attribute Details

#check_worksheet_sizeObject

Returns the value of attribute check_worksheet_size.



19
20
21
# File 'lib/gsmetrics/gsmetrics.rb', line 19

def check_worksheet_size
  @check_worksheet_size
end

Instance Method Details

#<<(item) ⇒ Object



33
34
35
# File 'lib/gsmetrics/gsmetrics.rb', line 33

def << item
  append item
end

#append(item) ⇒ Object



29
30
31
# File 'lib/gsmetrics/gsmetrics.rb', line 29

def append item
  @items << (item.nil? ? "" : item)
end

#next_rowObject



37
38
39
40
# File 'lib/gsmetrics/gsmetrics.rb', line 37

def next_row
  @rows << @items
  @items = []
end

#save(row_id = nil) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/gsmetrics/gsmetrics.rb', line 42

def save row_id = nil
  next_row
  row_id ||= worksheet.num_rows + 1

  set_worksheet_size(row_id + @rows.size)

  @rows.each_with_index do |items, row_index|
    items.each_with_index do |item, item_index|
      worksheet[row_id + row_index, item_index + 1] = item
    end
  end
  @items = []
  worksheet.save
end

#save!(row_id = nil) ⇒ Object

Raises:



57
58
59
# File 'lib/gsmetrics/gsmetrics.rb', line 57

def save! row_id = nil
  raise GSMetrics::Error.new('Save failed') unless save(row_id)
end

#sessionObject



65
66
67
# File 'lib/gsmetrics/gsmetrics.rb', line 65

def session
  GoogleDrive.(@email, @password)
end

#set_worksheet_size(size) ⇒ Object



61
62
63
# File 'lib/gsmetrics/gsmetrics.rb', line 61

def set_worksheet_size size
  worksheet.max_rows = size unless worksheet.max_rows >= size
end

#worksheetObject



69
70
71
# File 'lib/gsmetrics/gsmetrics.rb', line 69

def worksheet
  @worksheet ||= session.spreadsheet_by_title(@doc_title).worksheet_by_title(@worksheet_title)
end