IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs Google Discussion :

Récupération de données sur Twitter


Sujet :

APIs Google

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Récupération de données sur Twitter
    Bonjour tout le monde !

    J'aurai besoin de votre aide sur un script et une formule pour récupérer des données publiques sur Twitter : Nombre de tweets, followers et following.
    Pour info je travail en communication et webmarketing et j'aimerai utiliser ça pour faire un reporting sur l'évolution du nombre d'abonnés de notre compte Twitter, chose impossible à avoir sur Twitter Analytics malheureusement.

    Pour le script :

    Il ne fonctionne pas, je reçois une erreur ligne 13 et si je la supprime celle d'en dessous ont le même problème : TypeError: Impossible d'appeler la méthode "getRange" de undefined. (ligne 14, fichier "Code")
    Le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // Créer un menu pour actualiser le reporting à la main si besoin
    function onOpen() {
      var ui = SpreadsheetApp.getUi();
      ui.createMenu('Actualisation reporting')
          .addItem('Save Data - Twitter','saveDataTwitter')
          .addItem('Save Data - Facebook','saveDataFacebook')
          .addToUi();
    }
     
    // Sauvegarder les données Twitter dans une nouvelle ligne en bas du même Sheet
    function saveDataTwitter() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheets()[1];  // ************** ICI le'erreur *************
      var handle = sheet.getRange('Twitter!A2').getValue();
      var url = sheet.getRange('Twitter!B2').getValue();
      var date = sheet.getRange('Twitter!C2').getValue();
      var tweets = sheet.getRange('Twitter!D2').getValue();
      var following_count = sheet.getRange('Twitter!E2').getValue();
      var follower_count = sheet.getRange('Twitter!F2').getValue();
      sheet.appendRow([handle,url,date,tweets,following_count,follower_count]);
    }
    Pour la formule :

    =ARRAY_CONSTRAIN(SI(ESTVIDE(A2);"";importHTML("http://m.twitter.com/"&A2;"table";3));1;3) .

    Donc elle fonctionne, seulement c'est sensé me créer un tableau comme dans l'article or moi il me met le titre (nb de tweet, followers etc) directement avec les données. Ca encore c'est pas très grave il me suffira d'enlever le "followers" et "following" dans les cases à l'aide de CTRL + F.
    Photo :
    Nom : Capture d’écran 2019-01-23 à 12.07.31.png
Affichages : 353
Taille : 5,4 Ko


    Par contre il parle aussi de la fonction NOW() qui moi fonctionne avec MAINTENANT(). Je ne sais pas où la mettre dans sa formule ? Du coup je l'ai mis dans une colonne à gauche de followers. Ca fonctionne ça met la date du jour.

    En revanche, la formule et le script doivent normalement enregistrer les données chaque jour et créer une nouvelle ligne en dessous de l'actuel le lendemain avec les nouvelles données. Or moi, ça me donne toujours la même ligne mais qui s'actualise.

    Exemple :
    Normalement ca devrait être par exemple : 707 tweets, 2000 followers puis le lendemain ça crée une ligne en dessous et ca met 708 tweets, 2001 followers etc (si j'ai posté un tweet et gagné un follower).
    Or là j'ai toujours la même ligne, mais qui s'actualise. Du coup les données des jours précédent de sont pas enregistré.

    Voilà, j'ai essayé d'être le plus clair possible mais c'est pas facile. Si vous avez des questions n'hésitez pas et je remercie d'avance ceux qui m'aideront, vraiment !

    Voici le lien du Google Sheet qui sera surement plus parlant (j'ai remplacé le nom de l'entreprise par la Fevad) : https://docs.google.com/spreadsheets...it?usp=sharing

  2. #2
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    Bonjour,

    Cette erreur pourrait se produire comme décrit si le script n'est associé qu'à une seule sheet. Auquel cas, la correction pourrait être :
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    var sheet = ss.getSheets()[0];

    Une façon de s'en assurer serait de vérifier la longueur du tableau retourné par "ss.getSheets()", par exemple en traçant cette longueur dans les journaux à l'aide de :
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    Logger.log(ss.getSheets().length);

    Bon courage
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Tout d'abord merci beaucoup pour ton aide, c'est très gentil !

    Il y a eu une erreur par le modérateur qui à éditer mon post (car j'avais mis les balise Quote à la place de Code) et c'est la ligne 14 où ça ne fonctionne pas (et non la 13) :/

    Voici, je l'ai mis en gras :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // Créer un menu pour actualiser le reporting à la main si besoin
    function onOpen() {
      var ui = SpreadsheetApp.getUi();
      ui.createMenu('Actualisation reporting')
          .addItem('Save Data - Twitter','saveDataTwitter')
          .addItem('Save Data - Facebook','saveDataFacebook')
          .addToUi();
    }
     
    // Sauvegarder les données Twitter dans une nouvelle ligne en bas du même Sheet
    function saveDataTwitter() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheets()[1];
      var handle = sheet.getRange('Twitter!A2').getValue(); // ************** ICI ligne d'erreur ***************
      var url = sheet.getRange('Twitter!B2').getValue();
      var date = sheet.getRange('Twitter!C2').getValue();
      var tweets = sheet.getRange('Twitter!D2').getValue();
      var following_count = sheet.getRange('Twitter!E2').getValue();
      var follower_count = sheet.getRange('Twitter!F2').getValue();
      sheet.appendRow([handle,url,date,tweets,following_count,follower_count]);
    }
    L'erreur : TypeError: Impossible d'appeler la méthode "getRange" de undefined. (ligne 14, fichier "Code")

  4. #4
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    De rien, c'est avec plaisir :-)

    Mais oui, c'est ce que j'avais compris.
    Le message "Impossible d'appeler la méthode 'getRange' de undefined" rattaché à la ligne 14 signifie que sur cette ligne la variable "sheet" vaut "undefined"; et donc, de mon point de vue, l'instruction qui ne valorise pas correctement "sheet" et doit être corrigée est bien à la ligne précédente.

    Pour rappel, "getSheets()" retourne un tableau de "Sheet", or les tableaux en js sont indexés sur 0 !
    Une alternative pour éviter les surprises serait d'utiliser préférentiellement "getSheetByName('xxx')" où "xxx" est le nom de la feuille à utiliser : https://developers.google.com/apps-s...heetbynamename

    Un autre point (par avance...) : "sheet.getRange('Twitter!A2')" ne retournera à priori rien non plus si le script est exécuté sur la spreadsheet partagée. L'objectif ici était vraisemblablement de trouver la valeur de la cellule A2 de la feuille "Twitter", sauf que la feuille s'appelle "Feuille 1" pour le moment...

    Dans le tuto suivi, il y a probablement plusieurs feuilles dans la spreadsheet (d'où l'utilisation de "getSheets") et elles ont été nommées ("Twitter", "Facebook" et au moins une autre feuille à priori). As tu laissé ton email et reçu l'exemple ?
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/04/2011, 13h43
  2. Réponses: 2
    Dernier message: 04/06/2007, 14h44
  3. Récupération de donnée sur support altéré
    Par Invité dans le forum Périphériques
    Réponses: 8
    Dernier message: 05/07/2006, 11h28
  4. Récupération de données sur Disque Dur
    Par assomniak dans le forum Windows XP
    Réponses: 3
    Dernier message: 17/06/2006, 15h57
  5. récupération de données sur une disquette
    Par olilacta dans le forum Ordinateurs
    Réponses: 3
    Dernier message: 21/04/2006, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo