require 'google/apis/sheets_v4'

class Google::Sheets::ApplicationService < ApplicationService
  def initialize(user)
    @user = user
  end

  def call
    service = Google::Apis::SheetsV4::SheetsService.new
    service.authorization = @user.google_oauth_token.access_token

    spreadsheet_props = {
      properties: {
        title: "#{@label} #{Time.zone.now}"
      }
    }

    value_range_object = Google::Apis::SheetsV4::ValueRange.new(values: body)
    range = 'Sheet1!A1'

    response = service.create_spreadsheet(spreadsheet_props, fields: 'spreadsheetId')
    return unless response

    spreadsheet_id = response.spreadsheet_id
    service.append_spreadsheet_value(
      spreadsheet_id,
      range,
      value_range_object,
      value_input_option: 'RAW',
      insert_data_option: 'INSERT_ROWS'
    )
  end
end
