Iniciar sesión

Ver la versión completa : POST desde Visual Basic a GOOGLE APPS script



Danielo515
22/01/2013, 06:18
Holaa

Pongo esto aquí por si alguien puede ayudarme u orientarme dónde preguntar porque estoy desesperadito.

el caso es que tengo un SCRIPT en visual BASIC Script que hace POSt hacia un script de google publicado como servicio.
El script de VBS coge cadenas de texto de un archivo de texto y se las manda al google app script.

En un principio me dediqué a escapar manulamente los carácteres especiales, como comillas simples, arrobas, almohadillas y demás parafernalia, y funcionaba relatibamente para cadenas cortas. En cuanto trataba de mandar cadenas más largas... caca.

Luego me hice un facepalm debido a que encontré que VBS tiene una función nativa para utilizar strings URL compatibles. Pero lejos de conseguir el resultado deseado, me encuentro con que muchas menos de las cadenas son aceptadas en el lado de google. Antes de 17 8, y ahora 2.

Cómo no me fiaba un pelo de lo que sí o no se comen los servidores de google hice un pequeño HTML que hace el mismo POST hacia el mismo SCRIPT, y con el form de HTML se lo traga todo. Supongo que HTML( o mi navegador) hace una mejor gestion de las string URLizadas, aunque no estoy seguro de cual es el problema.

Algunos códigos


function logThis(tab,args)




dim curTime : curTime = Time()
data = "'" & curTime & "'"




dim xHttp: Set xHttp = createobject("MSXML2.ServerXMLHTTP")


for each field in args
data = data & ",'" & escape(field) & "'"
next


URL="https://script.google.com/macros/s/....../exec"
xHttp.Open "POST", URL & "?sheet=" & tab & "&args=" & data, False




xHttp.setOption 2, 13056
xHttp.Send


' read response body
WScript.Echo xHttp.responseBody
escribirFile URL & "?sheet=" & tab & "&args=" & data & vbCrlf, "post_Request.txt"


set xHttp = Nothing


End Function





Tampoco sé porqué unas cadenas si se las traga desde VBS y otras no, aquí dos ejemplos de una que sí y otra que no

WORKS
https://script.google.com/macros/s/.../exec?sheet=0&args='danielo','H%3A%5CDocumentos%5Cauto_apertura. vbs','%20function%20escribirFile%28info%29','','%2 0function%20escribirFile%28info%29%20%20%20%20Dim% 20fsu%2C%20file%20%20%20%20Set%20fsu%20%3D%20Creat eObject%28%22Scripting.FileSystemObject%22%29%09Se t%20file%20%3D%20fsu.OpenTextFile%28directorio%2C% 20ForAppending%2C%20True%29%09file.Write%20info%09 file.close%09set%20fsu%20%3D%20Nothingend%20functi on%20'


Don't work
https://script.google.com/macros/s/.../exec?sheet=0&args='danielo','H%3A%5CDocumentos%5Cauto_apertura. vbs','function%20lee_file%28archivo%29','%27%0D%0A %27%20lee%20todas%20las%20l%EDneas%20de%20un%20arc hivo%20de%20texto%20a%20un%20array%0D%0A%27%0D%0A' ,'function%20lee_file%28archivo%29Dim%20arrFileLin es%28%29i%20%3D%200Do%20Until%20archivo.AtEndOfStr eam%20%27leemos%20el%20fichero%09%09%09%20Redim%20 Preserve%20arrFileLines%28i%29%09%09%09%20arrFileL ines%28i%29%20%3D%20archivo.ReadLine%09%09%09%20i% 20%3D%20i%20+%201%09%09Looplee_file%20%3D%20arrFil eLinesend%20function'