Spanish B4A Enviar datos a google sheet usando formularios

Buenas noches expertos, encontré estos códigos de vba de excel a google sheets, viendo los videos, traté de codificar pero algunas líneas me genera un error, si podrían ayudarme, o darme una guía, gracias por su apoyo.

'VIDEO 1
' 'SERGIO DÁVILA

'VIDEO 2
'
'Con esos vídeos traté de convertirlo a código B4A, pero tengo algunos errores

'CODIGO B4A:
Sub EnviarCaptura()
    Dim RespuestaMetodoPost As String 'Devuelve la información al formulario
    Dim FormularioUrl As String
    Dim DatosCapturados As String
    Dim HttpPlantilla As Object
    Dim Filas As Long
    Dim i As Long
    Dim Ruta As String   
    FormularioUrl = "https://docs.google.com/forms/d/e/1FAIpQLSf3OGFM_Lz91F2Lt9fmUIJH7xm4qWGnNukvmZlbDitlNwbTlf/formResponse"
    DatosCapturados = "entry.350897978=" & "Juan Perez"
    DatosCapturados = DatosCapturados & "&entry.1317559455=" & "Dato"
    ' Crear un objeto HttpJob para enviar la solicitud HTTP
    Dim job As HttpJob
    job.Initialize("", Me)     ''ESTA LÍNEA GENERA ERROR
    job.PostString(FormularioUrl, DatosCapturados)
    ' Esperar a que se complete la solicitud
    Wait For (job) JobDone(job As HttpJob)            'ESTA LÍNEA GENERA ERROR
    ' Verificar si la solicitud fue exitosa
    If job.Success Then
        ' Obtener la respuesta del servidor
        RespuestaMetodoPost = job.GetString
        ToastMessageShow("Datos enviados correctamente", True)
    Else
        ' Manejar el error
        Log(job.ErrorMessage)
        ToastMessageShow("Error al enviar los datos", True)
    End If
    ' Liberar los recursos utilizados por el objeto HttpJob
    job. Release
End Sub
 

Mariano Ismael Castro

Active Member
Licensed User
Buenas noches expertos, encontré estos códigos de vba de excel a google sheets, viendo los videos, traté de codificar pero algunas líneas me genera un error, si podrían ayudarme, o darme una guía, gracias por su apoyo.

'VIDEO 1
' 'SERGIO DÁVILA

'VIDEO 2
'
'Con esos vídeos traté de convertirlo a código B4A, pero tengo algunos errores

'CODIGO B4A'CODIGO B4A:
Sub EnviarCaptura()
    Dim RespuestaMetodoPost As String 'Devuelve la información al formulario
    Dim FormularioUrl As String
    Dim DatosCapturados As String
    Dim HttpPlantilla As Object
    Dim Filas As Long
    Dim i As Long
    Dim Ruta As String  
    FormularioUrl = "https://docs.google.com/forms/d/e/1FAIpQLSf3OGFM_Lz91F2Lt9fmUIJH7xm4qWGnNukvmZlbDitlNwbTlf/formResponse"
    DatosCapturados = "entry.350897978=" & "Juan Perez"
    DatosCapturados = DatosCapturados & "&entry.1317559455=" & "Dato"
    ' Crear un objeto HttpJob para enviar la solicitud HTTP
    Dim job As HttpJob
    job.Initialize("", Me)     ''ESTA LÍNEA GENERA ERROR
    job.PostString(FormularioUrl, DatosCapturados)
    ' Esperar a que se complete la solicitud
    Wait For (job) JobDone(job As HttpJob)            'ESTA LÍNEA GENERA ERROR
    ' Verificar si la solicitud fue exitosa
    If job.Success Then
        ' Obtener la respuesta del servidor
        RespuestaMetodoPost = job.GetString
        ToastMessageShow("Datos enviados correctamente", True)
    Else
        ' Manejar el error
        Log(job.ErrorMessage)
        ToastMessageShow("Error al enviar los datos", True)
    End If
    ' Liberar los recursos utilizados por el objeto HttpJob
    job. Release
End Sub
He probado tu codigo pero el error que recibo es el siguiente
1693353801214.png
 

josejad

Expert
Licensed User
Longtime User
Le has echado un ojo a este tutorial de @fernando1987?


Tiene además una librería, y se implica y ofrece soporte para sus proyectos:

 
Felizmente pude solucionarlo, muchas gracias. Y con respecto a la "librería gsheet" por favor contactarme [email protected], el código a continuación si funciona y sobre todo es gratis con "n" elementos usando formularios de google y google sheets

código b4a:
Sub EnviarDatos
    Dim RespuestaMetodoPost As String
    Dim FormularioUrl As String
    Dim DatosCapturados As String
        FormularioUrl="https://docs.google.com/forms/u/0/d/e/1FAIpQLScGw_uiNM_hXv23Aur65AJ62abXJMoF9Y9NlzDzkmLWFRNXTg/formResponse"   'coloque su link de formulario de google ver VIDEO 1 y 2
    
        DatosCapturados = "entry.350897972=" &  "PEREZ JUAN"      'entry.350897972 ver VIDEO 1 y 2     
        DatosCapturados = DatosCapturados & "&entry.1317559452=" & "SUCURSAL 1"     
        DatosCapturados = DatosCapturados & "&entry.2019094827=" & "2000.00"     
    
        Dim Job As HttpJob
        Job.Initialize("Job", Me)
        Job.PostString(FormularioUrl, DatosCapturados)
        
    '   Wait For (Job) JobDone(Job As HttpJob)
        
        If Job.Success Then
            RespuestaMetodoPost = Job.GetString
            ' Puedes hacer algo con la respuesta si es necesario
        Else
            Log("Error en la solicitud HTTP: " & Job.ErrorMessage)
        End If
        
        Job.Release
    Msgbox("Datos enviados correctamente", "")
End Sub
 

fernando1987

Active Member
Licensed User
Hola a todos,

Disculpen por escribir en un hilo antiguo, pero me pareció interesante actualizar este código con algunas mejoras que podrían ser útiles. He encontrado algunos detalles que podrían optimizarse, especialmente en cuanto al manejo de caracteres especiales (como tildes) que no se procesaban correctamente. Esto lo he solucionado implementando la codificación UTF-8 con StringUtils.EncodeUrl, lo que garantiza que los datos se envíen sin errores.

Además, he añadido validaciones adicionales para confirmar si los datos fueron enviados correctamente o si hubo algún fallo en la solicitud HTTP. Esto ayuda a mejorar el control sobre el estado de la conexión y la respuesta del servidor, lo que puede ser útil para depurar cualquier problema en la transmisión de datos.

Ejemplo:
Sub EnviarDatos
    Dim RespuestaMetodoPost As String
    Dim FormularioUrl As String
    Dim DatosCapturados As String
    Dim su As StringUtils  ' Inicializar el objeto StringUtils
   
    ' URL del formulario de Google
    FormularioUrl = "https://docs.google.com/forms/u/0/d/e/1FAIpQLScGw_uiNM_hXv23Aur65AJ62abXJMoF9Y9NlzDzkmLWFRNXTg/formResponse"  ' Coloca tu enlace de formulario de Google

    ' Datos capturados, utilizando URL encoding para cada campo
    DatosCapturados = "entry.350897972=" & su.EncodeUrl("PEREZ JUAN", "UTF-8")  ' Codificación de nombre
    DatosCapturados = DatosCapturados & "&entry.1317559452=" & su.EncodeUrl("SUCURSAL 1", "UTF-8")  ' Codificación de sucursal
    DatosCapturados = DatosCapturados & "&entry.2019094827=" & su.EncodeUrl("2000.00", "UTF-8")  ' Codificación de monto

    ' Crear y enviar la solicitud HTTP
    Dim Job As HttpJob
    Job.Initialize("Job", Me)
    Job.PostString(FormularioUrl, DatosCapturados)

    ' Esperar a que se complete la solicitud HTTP (si es necesario descomentar la línea Wait For)
Wait For (Job) JobDone(Job As HttpJob)

    ' Comprobar si la solicitud fue exitosa
    If Job.Success Then
        ' Aunque Google Forms no devuelva una respuesta significativa, podrías comprobar el estado de la conexión
        Log("Datos enviados correctamente")
    Else
        ' Registrar el mensaje de error en caso de que falle
        Log("Error en la solicitud HTTP: " & Job.ErrorMessage)
    End If

    ' Liberar el objeto Job
    Job.Release
End Sub
 
Top