Class: QaCube::SheetsAppender

Inherits:
Object
  • Object
show all
Defined in:
lib/google-sheets-appender.rb

Constant Summary collapse

OOB_URI =
'urn:ietf:wg:oauth:2.0:oob'
APPLICATION_NAME =
'Google Sheets API Test Result Appender'
SCOPE =
Google::Apis::SheetsV4::AUTH_SPREADSHEETS

Instance Method Summary collapse

Constructor Details

#initialize(sheet_name:, spreadsheet_id:, range:, verbose: nil, client_secrets_path:, workspace_dir:) ⇒ SheetsAppender

Returns a new instance of SheetsAppender.



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/google-sheets-appender.rb', line 15

def initialize(sheet_name:, spreadsheet_id:, range:, verbose: nil, client_secrets_path:, workspace_dir:)
  @credentials_path = File.join(workspace_dir, '.credentials','sheetsappender.yaml')
  @verbose ||= verbose
  if @verbose.nil?
    @verbose = false
  end
  @client_secrets_path = client_secrets_path
  @service = Google::Apis::SheetsV4::SheetsService.new
  @service.authorization = authorize
  @spreadsheet_id = spreadsheet_id
  @sheet_name = sheet_name
  @range = "\'#{sheet_name}\'!#{range}"
end

Instance Method Details

#append(values:) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/google-sheets-appender.rb', line 35

def append(values:)
  request_body = Google::Apis::SheetsV4::ValueRange.new({values: values})
  response = @service.append_spreadsheet_value(@spreadsheet_id, @range, request_body, value_input_option: "USER_ENTERED")
  if @verbose
    puts response.to_json
  end
end

#authorizeObject



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/google-sheets-appender.rb', line 43

def authorize
  FileUtils.mkdir_p(File.dirname(@credentials_path))
  client_id = Google::Auth::ClientId.from_file(@client_secrets_path)
  token_store = Google::Auth::Stores::FileTokenStore.new(file: @credentials_path)
  authorizer = Google::Auth::UserAuthorizer.new(client_id, SCOPE, token_store)
  user_id = 'default'
  credentials = authorizer.get_credentials(user_id)
  if credentials.nil?
    url = authorizer.get_authorization_url(base_url: OOB_URI)
    puts "First time auth URL"
    puts url
    code = gets
    credentials = authorizer.get_and_store_credentials_from_code(user_id: user_id, code: code, base_url: OOB_URI)
  end
  credentials
end

#read_sheetObject



30
31
32
33
# File 'lib/google-sheets-appender.rb', line 30

def read_sheet
  sheet = @service.get_spreadsheet_values(@spreadsheet_id, @range)
  sheet
end