viernes, 12 de junio de 2020

Publicando en Facebook desde Excel con VBA (II)

Hace algunos días vimos como publicar un post de texto en nuestras páginas de Facebook (Enlace). Además, ahí explicamos cómo obtener la clave token de nuestra página, la cual es necesaria para poder seguir publicando diversas cosas como imágenes, que es lo que haremos en esta oportunidad.

Como asumo que ya todos/as leyeron el artículo anterior, ahora me centrare en las características que debe tener la imagen que vamos a usar. Ah, eso sí, la imagen debe estar ya en internet de manera previa, es decir, vamos a usar una imagen que hayamos colocado en alguna web o de alguna web que lo permita. Sobre el formato, pueden usarse los siguientes: JPG/JPEG, BMP, PNG, GIF y TIFF. “Facebook For Developers” recomienda que los archivos PNG tengan un tamaño menor a 1 MB, asimismo, para otros formatos recomiendan imágenes de menos de 4 MB.

Para lograr nuestro cometido, nuevamente usaremos el objeto MSXML2.XMLHTTP60 y el método POST. Para ello los parámetros que usaremos en esta ocasión serán los siguientes:

"https://graph.facebook.com/[Aquí_el_ID_de_la_página]/photos?&url=[Aquí_la_URL_de_tu_imagen]&caption=[Aquí_el_texto_que_queremos_con_la_foto]&access_token=[Aquí_tu_clave_token]"

Por si acaso, una forma fácil de conseguir el URL de una imagen es darle clic derecho y elegir la opción “Copiar dirección de imagen” o “Copiar vínculo de la imagen” (el mensaje exacto dependerá del navegador d que uses).

Ahora sí vamos a lo que les gusta, el VBA. Lo primero será declarar nuestras variables. No ovliden activar las referencias a “Microsoft XML, v6.0” (el 6 puede variar dependiendo de tu versión de Office).

Dim WebXML As New MSXML2.XMLHTTP60 
Dim miURL As String
Ahora a la variable miURL, le vamos a asignar la cadena dar con parámetros que necesitamos y habíamos comentado líneas arriba.  Como verán los parámetros deben ser reemplazados en la cadena (sin los corchetes, por si acaso.). Una vez conseguida la cadena, se la asignamos a la variable, quedando en mi caso así:
miURL = "https://graph.facebook.com/ 389999999905731/photos?&url=https://1.bp.blogspot.com/9TKACuCKzyA/XtmyFrZXGNI/AAAAAAAADzc/YofqAsYp1SHGi9U9reyxtitmzOIQCK4BGAsYHg/w400h330/Face11.jpg&caption=Imagen de prueba&access_token=EAAkUiClZCzDgBAB0ZA2P4iGZBdNjC1O999JvsI8AeZBufiwUw18jAAOZAF9nZB30QEIeEZCfXh6ZC1KsE9yNXad7rTnZCpOkRURpbbIt1SU35P2z4GXhBMNtdwZB8HggZBL1LZBwXAyeSpo844y1n4a3U8KcdZCHsjyPCAZAuSrHyLYjgZDZD"

Lo que toca ahora es usar la instrucción Open combinada con el método Post para configurar la solicitud (cadena URL) a la web y de inmediato usaremos el método Send para abrir la conexión y enviar la solicitud al servidor. Todo junto debe quedar así: 

Sub EnviaraFacebook()  

Dim WebXML As New MSXML2.XMLHTTP60  
Dim miURL As String 

miURL = "https://graph.facebook.com/ 389999999905731/photos?&url=https://1.bp.blogspot.com/9TKACuCKzyA/XtmyFrZXGNI/AAAAAAAADzc/YofqAsYp1SHGi9U9reyxtitmzOIQCK4BGAsYHg/w400h330/Face11.jpg&caption=Imagen de prueba&access_token=EAAkUiClZCzDgBAB0ZA2P4iGZBdNjC1O999JvsI8AeZBufiwUw18jAAOZAF9nZB30QEIeEZCfXh6ZC1KsE9yNXad7rTnZCpOkRURpbbIt1SU35P2z4GXhBMNtdwZB8HggZBL1LZBwXAyeSpo844y1n4a3U8KcdZCHsjyPCAZAuSrHyLYjgZDZD" 

WebXML.Open "POST", URL, False  
WebXML.send  

MsgBox "Listo"  

End Sub 

Al correr la macro, en nuestra página tendremos algo así:

¿Notan que, nuevamente, sale el nombre de la app creada para Facebook en el primer artículo? Ese post no lo borraré para que quede como una nueva prueba. Les recuerdo que el token les seguirá sirviendo para próximas publicaciones.

Eso es todo en esta oportunidad ¡Hasta la próxima!

Abraham Valencia
Lima, Perú

1 comentario: