Crea una carpeta en google drive con google-drive-ruby gem

Sé que aquí se hizo una pregunta similar, sin embargo, todavía no puedo obtener este trabajo ya que mi caso es un poco diferente. Quiero poder crear una carpeta en google drive usando la gem google-drive-ruby .

Según Google ( https://developers.google.com/drive/folder ) al usar la API “Drive”, puede crear una carpeta insertando un archivo con el tipo mime “application / vnd.google-apps.folder”

p.ej

POST https://www.googleapis.com/drive/v2/files Authorization: Bearer {ACCESS_TOKEN} Content-Type: application/json ... { "title": "pets", "parents": [{"id":"0ADK06pfg"}] "mimeType": "application/vnd.google-apps.folder" } 

En mi caso, quiero poder hacer lo mismo pero al utilizar la API google_drive. Tiene la opción upload_from_file que acepta la opción de tipo mime, sin embargo, esto todavía no funciona para mí, el mejor resultado que obtuve hasta ahora cuando ejecuté el siguiente código fue este mensaje de error de Google.

session.upload_from_file (“test.zip”, “test”,: content_type => “application / vnd.google-apps.folder”)

“La aplicación de tipo mime / vnd.google-apps.folder no es válida. Los archivos no se pueden crear con los tipos mime de Google.

Te agradeceré si me puedes dar alguna sugerencia.

En realidad es bastante sencillo. Una carpeta en Google Drive es un GoogleDrive::Collection ( http://gimite.net/doc/google-drive-ruby/GoogleDrive/Collection.html ) en google-drive-ruby gem . Por lo tanto, lo que puede hacer con google-drive-ruby es primero crear un archivo y luego agregarlo a una colección a través del GoogleDrive::Collection#add(file) .

Esto también imita la forma en que realmente funciona Google Drive: cargue un archivo a la colección / carpeta raíz, luego agréguelo a otras colecciones / carpetas.

Aquí hay un código de ejemplo, que había escrito. Debería funcionar, quizás con algunos ajustes menores para su caso de uso específico, en función del contexto que haya proporcionado:

 # this example assumes the presence of an authenticated # `GoogleDrive::Session` referenced as `session` # and a file named `test.zip` in the same directory # where this example is being executed # upload the file and get a reference to the returned # GoogleSpreadsheet::File instance file = session.upload_from_file("test.zip", "test") # get a reference to the collection/folder to which # you want to add the file, via its folder name folder = session.collection_by_title("my-folder-name") # add the file to the collection/folder. # note, that you may add a file to multiple folders folder.add(file) 

Además, si solo desea crear una nueva carpeta, sin colocar ningún archivo en ella, simplemente agréguela a la colección raíz:

 session.root_collection.create_subcollection("my-folder-name")