Ask A Question


You’re not receiving notifications from this thread.

How to upload google doc file or drive file in drive collection using google drive ruby gem?

TOSSIM Brice asked in Ruby

In my app, I want to upload google doc file or google drive file in my drive collection using google drive ruby gem. I saw function like upload_from_file(path) but it works when I'm using local file but not when I want to use google doc file or drive file. Somebody to help me please ?

#When I post my form
def create
  folder_url = ""
  spreadsheet_path = ""

  #Connect to the Drive API with credentials json file
  session = GoogleDrive::Session.from_config("#{ENV['CONFIG_PATH']}/config.json")

  test_dev = session.collection_by_url("#{folder_url}XXX")

  folder = test_dev.create_subcollection(params[:title])

  #Get match between doc title and spreadsheet data
  worksheets = retrieve_spreadsheet_datas(session, spreadsheet_path).drop(1)
  worksheets.each do |row|
    name = row[1] + " " + row[2]
    if name == params[:title]
      #row[3] and row[4] contain link like ""
      if row[3] != nil
        create_folder(session, folder.web_view_link, 1, row[3])
      if row[4] != nil
        create_folder(session, folder.web_view_link, 2, row[4])


def retrieve_spreadsheet_datas(session, spreadsheet_path)
  spreadsheet = session.spreadsheet_by_url(spreadsheet_path)
  worksheet = spreadsheet.worksheets.first

def create_folder(session, url, i, file)
  collection = session.collection_by_url(url) #Open collection
  col_folder = collection.create_subcollection("R#{i}") #Create subcollection in it
  col_folder_content = session.collection_by_url(col_folder.web_view_link)  #Open the new collection

  #And here I want to upload "file (row[3] and row[4])" in "col_folder_content"

XXX represent a key. Thanks :)

Join the discussion
Create an account Log in

Want to stay up-to-date with Ruby on Rails?

Join 82,969+ developers who get early access to new tutorials, screencasts, articles, and more.

    We care about the protection of your data. Read our Privacy Policy.