Class: DataPitcher::Spreadsheet

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

Constant Summary collapse

BATCH_SIZE =
1000

Instance Method Summary collapse

Constructor Details

#initialize(spreadsheet_key) ⇒ Spreadsheet



7
8
9
# File 'lib/data_pitcher/spreadsheet.rb', line 7

def initialize(spreadsheet_key)
  @spreadsheet_key = spreadsheet_key
end

Instance Method Details

#clear_sheetObject



20
21
22
23
24
# File 'lib/data_pitcher/spreadsheet.rb', line 20

def clear_sheet
  worksheet.reload
  worksheet.delete_rows(1, worksheet.num_rows)
  worksheet.save
end

#fill_sheet(sql_query) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/data_pitcher/spreadsheet.rb', line 26

def fill_sheet(sql_query)
  result = DataPitcher::Executor.new(sql_query).execute
  worksheet.reload
  # fill header
  worksheet.insert_rows(1, [result.header])
  # fill rows
  result.rows.each_slice(BATCH_SIZE).with_index do |array, batch_index|
    worksheet.insert_rows(2 + batch_index * BATCH_SIZE, array)
    worksheet.save
  end
end

#replace_worksheet_with_query(sql_query) ⇒ Object



38
39
40
41
# File 'lib/data_pitcher/spreadsheet.rb', line 38

def replace_worksheet_with_query(sql_query)
  clear_sheet
  fill_sheet(sql_query)
end

#sessionObject



50
51
52
# File 'lib/data_pitcher/spreadsheet.rb', line 50

def session
  @session ||= ::GoogleDrive::Session.(DataPitcher.configuration.)
end

#spreadsheetObject



11
12
13
# File 'lib/data_pitcher/spreadsheet.rb', line 11

def spreadsheet
  @spreadsheet ||= session.spreadsheet_by_key(@spreadsheet_key)
end

#valid?Boolean



43
44
45
46
47
48
# File 'lib/data_pitcher/spreadsheet.rb', line 43

def valid?
  worksheet
  true
rescue => e
  false
end

#worksheetObject



15
16
17
18
# File 'lib/data_pitcher/spreadsheet.rb', line 15

def worksheet
  # NOTE: DataPitcher will access first sheet only
  @worksheet ||= spreadsheet.worksheets.first
end