Como almacenar datos en Google Sheets y Google Drive desde un formulario html
La necesidad de almacenar información en servidores o bases de datos hoy en día es muy buscada, pero si alguien nos puede proveer el servicio sin costo pues es mucho mejor. Entre servicios gratuitos conocidos están Onedrive de Microsoft con su office 360 Online y Google Drive con muchas aplicaciones disponibles como Google Sheets.
Ahora bien cuando creamos un formulario en una pagina web estos datos normalmente viajan a correos electrónicos o se almacenan en bases de datos propiamente.
En este post encontraras información de como hacerlo paso a paso, te compartimos el materia solo que que tu reemplaces algunos datos, adicionalmente es necesario crear una aplicación o proyecto en Google Cloud, pero todo esto lo podemos observan en el siguiente video…
Especificaciones del proyecto. a continuación puntualmente se registra como o que requisitos cumplen este desarrollo, APIs, plataformas y/o tecnologias:
PHP y HTML.
WordPress, desde un template adherido a un tema.
Habilitaremos Google Drive API + Google Sheets API.
Necesaria para crear una carpeta prueba (Donde se almacenan los archivos) y allí adentro un archivo Google Sheet (Donde se registran los datos del formulario).
Paso a Paso o Checklist de trabajo
Inicialmente vamos al repositorio de GitHub para descargar el paquete de archivos necesarios para el proyecto. Y lo guardamos en servidor en la carpeta del tema utilizado en /page-templates, si la carpeta no existe la creamos.
Podrás notar que hay una carpeta o archivo /api-drive esta no la usamos porque ya usamos /google-api-php-client. No es necesario usar api-drive o descomprimirlo a menos que tengas problemas con la versión de PHP de tu servidor y asi intentar con ese otro paquete de APIs.
- 1 - Entrar a Google Drive, crear carpeta y archivo Sheet
- 2- Al archivo Sheet quitar el acceso "Restringido" y dejar que cualquiera pueda editar.
- 3- Entramos a nuestra pagina en WordPress y creamos la pagina del formulario.
- 4- Vamos a Google Cloud y creamos nuestra app, seguido de habilitar las APIs necesarias, credenciales y cuenta de servicio para Google Drive y Sheets etc.
- 5- Editamos el formato php que será un template para WordPress, teniendo presente todos los valores a ingresar a continuacion:
- A- Template Name.
- B- @package
- C- $rutaCredenciales
- D- Nombre_APP_GoogleCloud
- E- $spreadsheetId
- F- define("RAIZ", "ID-CARPETA")
- G- $rutaCredencialesDrive
- H- $carpeta="ID-CARPETA"
- 6- Subimos el archivo editado al servidor
- 7- Creamos la pagina en WordPress a la cual vamos agregar el template editado.
- 8- Vamos a editar la pagina creada en WordPress para el punto 3 y colocamos el url de la pagina creada en el punto 7 en el action del form.
- 9- Vamos a Google Cloud/Credenciales, creamos una con el dominio de nuestra pagina y los subdominios (URI) donde se asocio el template editado.
- 10- Descargamos la credencial de cliente web como archivo .JSON
- 11- Ahora agregamos la cuenta de servicio creada. Vamos a la carpeta del Drive y compartimos esta con esa cuenta.
- 12- Creamos una CLAVE para la cuenta de servicio que nos permita descargar un archivo .JSON.
- 13- Guardamos los archivos .JSON descargados en la carpeta /auth en el servidor.
- Pasamos la aplicación a producción para que pueda cualquier persona con una cuenta de Google grabar datos en el Sheet.
Posibles errores o advertencias
Después de cualquier desarrollo o adaptación es inevitable que sucedan errores o no funcione todo como lo esperamos. así que te voy a contar donde puedes pasar por alto algún detalle que te pueda hacer perder la cabeza.
– Recuerda habilitar las APIs.
– Recuerda datos como el nombre de la App en el Google Cloud, el ID de la carpeta donde se almacenaran los datos y el ID del archivo Sheet donde irán los datos a registrar.
– Otorga permisos a la carpeta en el Drive(A la cuenta de servicio creada) y al archivo Sheet(Dando compartir y permitir que cualquiera pueda editar).
– En WordPress el action del formulario debe apuntar a la url de pagina creada en WordPress con el template editado y NO al archivo template en su ubicación.
– En el archivo editable existe una diferencia entre ubicación de un archivo en el servidor de tipo Sistema administrador de archivos y otra como URL. La primera define que buscara el archivo en un lugar dentro del servidor y la otra que quiere abrirlo desde una url como aparece en el navegador con el https:// etc.
– La mayoría de errores provienen de como se llama las librerías o las credenciales JSON (ClienteWebId y Cuenta de servicio), pero esto se debe a que no encuentra los archivos en el servidor. Por eso tendrás que estar seguro imprimiendo de alguna manera las ubicaciones que este intenta alcanzar o usando fileExist para comprobar si lo encuentra los archivos.
– Otro error frecuente es que siempre después de que se asocian dominios o URIs en las credenciales, siempre se debe actualizar el archivo .JSON ya que este cambia. Descargas y sobre escribes nuevamente en el servidor si ya existía el archivo allí.
– Otro error lejano que podría ocurrir es que los archivos que subes al servidor queden con permisos restringidos de lectura. Así que nunca podrán ser ejecutados o leídos por las paginas o templates cuando se llaman.
Si aparecen nuevos errores a personas con posible solución la colocare aquí.
Si te gusto este post y el video en Youtube, te invito a que te suscribas al canal y que me regales un like. Gracias.
