supuesto, aquí tienes una versión básica de lo que estoy haciendo:
require 'mechanize'
agent = Mechanize.new
page = agent.get "https://docs.google.com"
form = page.forms.first
form.Email = "your_username"
form.Passwd = "your_password"
page = agent.submit form
test = agent.get "google_download_url_goes_here"
puts test.body
Si nos fijamos en test
, verá el material de redirección de Java en lugar del archivo xls.
No he trabajado en ello en un par de días, pero tengo la ligera sensación de que recibo la redirección porque el script no está "correctamente" autenticado.Se supone que Mechanize maneja las cookies y las redirecciones, así que creo que esto simplemente debería funcionar, pero no es así.
ACTUALIZACIÓN:
de la URL de exportación son un poco más abajo en la misma página en la citada documentación se enlazó en su comentario. La URL para exportar una hoja de cálculo es el siguiente:
http://spreadsheets.google.com/feeds/download/spreadsheets/Export?key= "document_resource_id_goes_here" & ExportFormat = xls
Usted debe ser capaz de conectar que en un navegador y descargar un archivo (si está en el sistema, por supuesto) . La identificación del recurso del documento es simplemente la clave única para cualquier documento con el que esté trabajando, puede pegarlo manualmente en la URL para probarlo en un navegador.
Sin embargo, estoy bastante seguro de que ninguna de estas URL de la API funcionará en una secuencia de comandos a menos que se maneje correctamente la autenticación de la forma en que lo solicita Google. No estoy exactamente seguro de lo que estoy viendo, pero usando Wireshark para olfatear paquetes puedo ver algunos errores cuando uso un script que no obtengo cuando uso mi navegador. Estos errores parecen ocurrir cuando el servidor y el script están intercambiando algún tipo de información de certificado. De todos modos, he estado mirando la gema OAuth un poco más y creo que estoy empezando a comprenderlo mejor.
si vas aquí:
http://googlecodesamples.com/oauth_playground/
se puede jugar con las cosas de OAuth, que es una especie de locura cómo funciona. Usted solicita un token de solicitud con un conjunto de parámetros que deben ser 'simplemente' correctos. Envía el token de solicitud que luego utiliza para hacer referencia a una página de inicio de sesión donde ingresa sus credenciales de Google (como lo haría cuando trabaja manualmente con documentos de Google). Una vez que se verifican sus credenciales, le pide que otorgue permiso al token de solicitud. El token de solicitud se actualiza a un token de acceso y luego vuelve a su secuencia de comandos y luego puede comenzar a trabajar con el resto de la API al hacer referencia a este token de acceso ... parece exagerado, pero no soy un experto en seguridad.
Aquí es lo que estoy esperando hacer:
encontrar la manera de utilizar la gema OAuth Ruby a solicitar y enviar señales a Google.
Uso Mechanize para raspar la página de acceso a Google y escriba las credenciales de una vez lo puedo enviar la señal de petición que quiere
Uso Mechanize para hacer clic en el botón "Conceder acceso" una vez que se presentaron mis credenciales
Luego de esperar encontrar que realmente puedo usar el resto de la API para trabajar con archivos
(Grrr aprender cómo formatear correctamente el texto en esta página web es casi tan difícil !!:))
Interesante ... ¿puede indicarme un fragmento de código que puedo ejecutar en irb? –