Question

All of my attempts of passing mimeType and trashed into the client for execution are either failing or returning all my docs regardless of mimeType and trash status.

require 'google/api_client'
require 'launchy'
load 'auth.rb'

def client
  @client
end

def drive
  @drive
end

def session
  unless client
    @client = Google::APIClient.new
    @drive = client.discovered_api('drive', 'v2')
    client.authorization.client_id = client_id
    client.authorization.client_secret = secret
    client.authorization.scope = 'https://www.googleapis.com/auth/drive'
    client.authorization.redirect_uri = 'urn:ietf:wg:oauth:2.0:oob'

    uri = client.authorization.authorization_uri
    Launchy.open(uri)
    $stdout.write  "Enter authorization code: "
    client.authorization.code = gets.chomp
    client.authorization.fetch_access_token!
  end
  client
end

#application/vnd.google-apps.spreadsheet
def list_files
  session
  files = []
  #no matter how i go about trying to filter i always get all my docs...
  params = "'mimeType' = 'application/vnd.google-apps.spreadsheet' and 'trashed' = false"
  params = {'query' => {'mimeType' => 'application/vnd.google-apps.spreadsheet', 'trashed' => false}}
  params = {'q' => {'mimeType' => 'application/vnd.google-apps.spreadsheet', 'trashed' => false}}
  params = {'q' => "'mimeType' = 'application/vnd.google-apps.spreadsheet' and 'trashed' = false"}
  params = {'mimeType' => 'application/vnd.google-apps.spreadsheet', 'trashed' => false}
  begin
    rsp = client.execute :api_method => drive.files.list, :parameters => params
    #rsp = client.execute :api_method => drive.files.list, :q => params  # have tried comin
    files += rsp.data.items
    puts "Token was #{params['pageToken']} but now #{rsp.next_page_token}"
    params['pageToken'] = rsp.next_page_token unless rsp.next_page_token.nil?
  end while !rsp.next_page_token.nil?
  files
end

Also how can i use google drive results to get the spreadsheet key needed to use the spreadsheet api? The Files Resource returned from the query doesn't have any spreadsheet key information.

Was it helpful?

Solution

Could you try this?

params = {'q' => "trashed=false and mimeType='application/vnd.google-apps.spreadsheet'"}

Actually, if you send query with wrong syntax, it would return 400 Bad Request, not 200 Success with all files. It might be the case that you actually are not passing anything.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top