Class: Embulk::Input::GoogleSpreadsheets::SpreadsheetsClient

Inherits:
Object
  • Object
show all
Defined in:
lib/embulk/input/google_spreadsheets/spreadsheets_client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(task, auth:, pager:) ⇒ SpreadsheetsClient

Returns a new instance of SpreadsheetsClient.



12
13
14
15
16
17
18
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 12

def initialize(task, auth:, pager:)
  @spreadsheets_url = task['spreadsheets_url']
  @worksheet_title = task['worksheet_title']
  @value_render_option = task['value_render_option']
  @auth = auth
  @pager = pager
end

Instance Attribute Details

#authObject

Returns the value of attribute auth.



10
11
12
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 10

def auth
  @auth
end

#pagerObject

Returns the value of attribute pager.



10
11
12
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 10

def pager
  @pager
end

#spreadsheets_urlObject

Returns the value of attribute spreadsheets_url.



10
11
12
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 10

def spreadsheets_url
  @spreadsheets_url
end

#value_render_optionObject

Returns the value of attribute value_render_option.



10
11
12
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 10

def value_render_option
  @value_render_option
end

#worksheet_titleObject

Returns the value of attribute worksheet_title.



10
11
12
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 10

def worksheet_title
  @worksheet_title
end

Instance Method Details

#application_nameObject



24
25
26
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 24

def application_name
  @application_name ||= 'embulk-input-google_spreadsheets'
end

#loggerObject



20
21
22
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 20

def logger
  GoogleSpreadsheets.logger
end

#serviceObject



69
70
71
72
73
74
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 69

def service
  @service ||= Google::Apis::SheetsV4::SheetsService.new.tap do |s|
    s.client_options.application_name = application_name
    s.authorization = auth.authenticate
  end
end

#spreadsheetsObject



32
33
34
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 32

def spreadsheets
  service.get_spreadsheet(spreadsheets_id, ranges: worksheet_title, include_grid_data: false)
end

#spreadsheets_idObject



28
29
30
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 28

def spreadsheets_id
  SpreadsheetsUrlUtil.capture_id(spreadsheets_url)
end

#worksheetObject



36
37
38
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 36

def worksheet
  spreadsheets.sheets.first
end

#worksheet_each_record(&block) ⇒ Object



65
66
67
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 65

def worksheet_each_record(&block)
  pager.each_record(self, &block)
end

#worksheet_grid_propertiesObject



44
45
46
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 44

def worksheet_grid_properties
  worksheet_properties.grid_properties
end

#worksheet_max_column_numObject



52
53
54
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 52

def worksheet_max_column_num
  worksheet_grid_properties.column_count
end

#worksheet_max_row_numObject



48
49
50
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 48

def worksheet_max_row_num
  worksheet_grid_properties.row_count
end

#worksheet_propertiesObject



40
41
42
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 40

def worksheet_properties
  worksheet.properties
end

#worksheet_values(range) ⇒ Object



56
57
58
59
60
61
62
63
# File 'lib/embulk/input/google_spreadsheets/spreadsheets_client.rb', line 56

def worksheet_values(range)
  range = "#{worksheet_title}!#{range}"
  logger.info {
    "`embulk-input-google_spreadsheets`: load data from spreadsheet: '#{spreadsheets_url}'," \
    " range: '#{range}', value_render_option: '#{value_render_option}'"
  }
  service.get_spreadsheet_values(spreadsheets_id, range, value_render_option: value_render_option).values
end