Class: QaCube::SheetsAppender
- Inherits:
-
Object
- Object
- QaCube::SheetsAppender
- 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
- #append(values:) ⇒ Object
- #authorize ⇒ Object
-
#initialize(sheet_name:, spreadsheet_id:, range:, verbose: nil, client_secrets_path:, workspace_dir:) ⇒ SheetsAppender
constructor
A new instance of SheetsAppender.
-
#read_sheet ⇒ Object
returns a ‘ValueRange’ (see: www.rubydoc.info/github/google/google-api-ruby-client/Google/Apis/SheetsV4/ValueRange).
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. = @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 |
#authorize ⇒ Object
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 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) = Google::Auth::UserAuthorizer.new(client_id, SCOPE, token_store) user_id = 'default' credentials = .get_credentials(user_id) if credentials.nil? url = .(base_url: OOB_URI) puts "First time auth URL" puts url code = gets credentials = .get_and_store_credentials_from_code(user_id: user_id, code: code, base_url: OOB_URI) end credentials end |
#read_sheet ⇒ Object
returns a ‘ValueRange’ (see: www.rubydoc.info/github/google/google-api-ruby-client/Google/Apis/SheetsV4/ValueRange)
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 |