Plan du site  · Français  · English  · Deutsch
Home » Blog » Article
Article

Twitter et Excel

19.04.2009
Veuillez noter que cet article est une traduction de notre article paru dans notre blog en Allemand. Twitter est un service microblogging, qui vous permet d’envoyer des messages avec une longueur maximale de 140 caractères. En général, les messages sont envoyés avec un navigateur web. Ok, il existe beaucou de logiciels spécialisés, cependant notre logiciel préféré est Microsoft Excel. Ceci est le début de notre complément pour Excel.

Dans cet article nous voudrions vous présenter les techniques utilisés pour envoyer des messages à Twitter. Vous pouvez également télécharger un fichier example open source. L’exemple utilise une part du code du complément pour Excel.

Interface Twitter
En premier, il fallait réchercher si une API - Application Programming Interface - est disponible pour Twitter. Ceci est rapidement fait, vu que sur leur site une documentation est facilement trouvable.

Twitter s’oriente aux principes de REST - Representational State Transfer - un style d’architecture postulant que chaque resource soir accessible par une URI. Twitter utilise http comme protocolle de transport. Au cas où nous voulons envoyer un message, nous devons utiliser la méthode POST, remplir quelques paramètres et choisir un format.

Selon l’API, il est nécessaire d’utiliser la fonction statuses/update et la variable status pour envoyer le message:

http://twitter.com/statuses/update.xml?status=MonMessage

Cependant l’utilisateur n’est pas encore authentifié, nous devons ajouter son nom d’utilisateur et son mot de passe:

http://username:password@twitter.com/statuses/update.xml?status=MonMessage

En plus il seras nécessaire d’encoder les caractères speciaux dans le message comme par example < et >.

Envoyer des message à Twitter avec Excel
La question se pose, comment envoyer des messages avec Excel? Microsoft Windows contient une bibliothèque ActiveX (depuis l’Internet Explorer 5.0) qui nous permet de nous connecter à un serveur web. Cette bibliothèque est entre outre aussi utilisée pour des applications Ajax. Nous pouvons créer une instance en appelant CreateObject(). Voici le code:
  Public Sub mlfpTwitter()
    
    Dim n As String
    Dim p As String
    Dim m As String
    Dim r As String
    
    Dim x As Object
    
'   Bypass...
    
    On Error Resume Next
    
'   Read...
    
    n = ThisWorkbook.ActiveSheet.Cells(3, 4).Value
    p = ThisWorkbook.ActiveSheet.Cells(5, 4).Value
    m = ThisWorkbook.ActiveSheet.Cells(7, 4).Value
    
'   Reset...
    
    ThisWorkbook.ActiveSheet.Cells(11, 4).Value = ""
    
'   Check...
    
    If Len(n) < 1 Then
      
'     Message...
      
      ThisWorkbook.ActiveSheet.Cells(11, 4).Value = _
     "Pas de nom d'utilisateur."
      
'     Exit...
      
      Exit Sub
      
    End If
    
'   Check...
    
    If Len(p) < 1 Then
      
'     Message...
      
      ThisWorkbook.ActiveSheet.Cells(11, 4).Value = _
     "Pas de mot de passe."
      
'     Exit...
      
      Exit Sub
      
    End If
    
'   Check...
    
    If Len(m) < 1 Then
      
'     Message...
      
      ThisWorkbook.ActiveSheet.Cells(11, 4).Value = _
     "Pas de message."
      
'     Exit...
      
      Exit Sub
      
    Else
    
      If Len(m) > 140 Then
      
'       Message...
        
        ThisWorkbook.ActiveSheet.Cells(11, 4).Value = _
       "Message trop long."
        
'       Exit...
        
        Exit Sub
        
      End If
      
    End If
    
'   Encode...
    
    m = mlfpEncode(m)
    
'   Cursor...
    
    Application.Cursor = xlWait
    
'   Create...
    
    Set x = CreateObject("Msxml2.XMLHTTP")
    
'   Check...
    
    If Not x Is Nothing Then
      
'     Open...
      
      x.Open "POST", "http://" & n & ":" & p & _
             "@twitter.com/statuses/update.xml?" & _
             "status=" & m, False
      
'     Header...
      
      x.setRequestHeader "Content-Type", _
     "content=text/html; charset=UTF-8"
      
'     Send...
      
      x.send
      
'     Result...
      
      If InStr(Trim(LCase(x.responseText)), "error") > 0 Then
        
'       Message...
        
        ThisWorkbook.ActiveSheet.Cells(11, 4).Value = _
       "Erreur."
        
      Else
        
'       Message...
        
        ThisWorkbook.ActiveSheet.Cells(11, 4).Value = _
       "Succès."
         
      End If
      
    End If
    
'   Clear...
    
    Set x = Nothing
    
'   Cursor...
    
    Application.Cursor = xlDefault
    
  End Sub
En un premier pas, nous initialisons les variables n, p et m en lisant le nom de l’utilisateur, le mot de passe et le message des cellules correspondantes de la feuille active. Ensuite nous vérifions le contenu des variables, par exemple si leur longueur est bien plus grande que zéro. En cas de succès, nous encodons le message en appelant mlfpEncode(). La fonction seras discutée plus tard.

Set x = CreateObject("Msxml2.XMLHTTP") crée un object XMLHTTP. En appelant x.Open() nous pouvons ouvrir une connexion et par la suite envoyer le message. L’encodage utilisé est par la suite transmise au serveur. Finalement, le serveur nous envoye un réponse que nous pouvons évaluer pour d’eventuel erreurs.

La fonction suivante mlfpMap() crée une table de mappage pour les charactères spéciaux. Chaque caratère est enrégistré dans un object Collection, chaque élements utilise comme clé primaire le code ASCII du caractère. La liste de caractères est lu dasn une boucle à partir d’une feuille.
  Public Function mlfpMap() As Long
    
    Dim c As Long
    Dim n As Long
    
    Dim f As String
    Dim q As String
    
'   Bypass...
    
    On Error Resume Next
    
'   Create...
    
    Set mlvpMap = New Collection
    
'   With...
    
    With ThisWorkbook.Worksheets(3)
    
'   Loop...
    
      For n = 1 To 98
        
        mlvpMap.Add "%" & _
        Replace(CStr(.Cells(n + 1, 4).Value), ",", "%"), "K" & _
        Asc(CStr(.Cells(n + 1, 3).Value))
        
      Next n
    
    End With
    
'   Return...
    
    mlfpMap = mlvpMap.Count
    
  End Function
La fonction mlfpEncode() vérifie tout d’abord si la collection est déjà existente et appele en cas de besoin mlfpMap(). Ensuite, tout les caractères du message sont vérifiés dans une boucle et éventuellement remplacés.
  Public Function mlfpEncode(Message As String) As String
    
    Dim n As Long
    
    Dim s As String
    Dim t As String
    
'   Bypass...
    
    On Error Resume Next
    
'   Check...
    
    If mlvpMap Is Nothing Then
    
      mlfpMap
      
    End If
    
'   Loop...
    
    For n = 1 To Len(Message)
      
'     Try...
      
      t = ""
      t = mlvpMap("K" & Asc(Mid(Message, n, 1)))
      
'     Check...
      
      If Len(t) > 0 Then
        
        s = s & t
        
      Else
        
        s = s & Mid(Message, n, 1)
        
      End If
      
    Next n
    
'   Return...
    
    mlfpEncode = s
    
  End Function
Vous pouvez télécharger le ficher example dans notre section de téléchargement.

Twitter4Excel
Ce complément pour Excel vous permet d’envoyer des messages à Twitter par une propre interface. Les messages antérieurs sont enrégistrés dans une banque de données Access. Le logiciel est disponible en Français, Anglais et Allemand. Veuillez noter que nous avons primordialement développé et testé le logiciel en Microsoft Excel 2003. Voici une capture d’écran du logiciel.:

Twitter4Excel

Liens
» Téléchargement
» Maninweb.de chez Twitter
» Twitter API, Anglais
» Informations sur REST chez Wikipedia