Class: GoogleSpreadsheetFetcher::Fetcher

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

Constant Summary collapse

OOB_URI =
'urn:ietf:wg:oauth:2.0:oob'

Instance Method Summary collapse

Constructor Details

#initialize(credential_store_file, user_id, sheet_key, application_name: nil) ⇒ Fetcher

Returns a new instance of Fetcher.



10
11
12
13
14
15
16
# File 'lib/google_spreadsheet_fetcher/fetcher.rb', line 10

def initialize(credential_store_file, user_id, sheet_key, application_name: nil)
  @client_secret_file = GoogleSpreadsheetFetcher.config.client_secrets_file_path
  @credential_store_file = credential_store_file
  @user_id = user_id
  @sheet_key = sheet_key
  @application_name = application_name
end

Instance Method Details

#fetch_all_rows(range, skip: 0) ⇒ Object

Fetch all rows



22
23
24
25
26
27
28
# File 'lib/google_spreadsheet_fetcher/fetcher.rb', line 22

def fetch_all_rows(range, skip: 0)
  rows = service.batch_get_spreadsheet_values(@sheet_key, ranges: [range])&.value_ranges&.first&.values
  return if rows.empty?

  rows.slice!(0, skip)
  rows
end

#fetch_all_rows_by_gid(gid, skip: 0) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/google_spreadsheet_fetcher/fetcher.rb', line 38

def fetch_all_rows_by_gid(gid, skip: 0)
  sheet = sheet_by_gid(gid)
  raise if sheet.nil?

  range = "#{sheet.properties.title}!A:Z"
  fetch_all_rows(range, skip: skip)
end

#fetch_all_rows_by_index(index, skip: 0) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/google_spreadsheet_fetcher/fetcher.rb', line 30

def fetch_all_rows_by_index(index, skip: 0)
  sheet = sheet_by_index(index)
  raise if sheet.nil?

  range = "#{sheet.properties.title}!A:Z"
  fetch_all_rows(range, skip: skip)
end

#fetch_all_rows_by_title(title, skip: 0) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/google_spreadsheet_fetcher/fetcher.rb', line 46

def fetch_all_rows_by_title(title, skip: 0)
  sheet = sheet_by_title(title)
  raise if sheet.nil?

  range = "#{sheet.properties.title}!A:Z"
  fetch_all_rows(range, skip: skip)
end

#serviceObject



54
55
56
57
58
59
60
61
62
# File 'lib/google_spreadsheet_fetcher/fetcher.rb', line 54

def service
  @service ||= begin
    credentials = fetch_credentials

    service = Google::Apis::SheetsV4::SheetsService.new
    service.authorization = credentials
    service
  end
end