Comment puis-je exporter des données de contact en utilisant l'API ?

Il peut arriver que vous deviez exporter vos données de contact en dehors de notre application. Vous souhaitez peut-être sauvegarder vos données, ou vous avez besoin d'analyser chaque contact de votre compte.

Vous pouvez rapidement exporter tous les contacts dans un fichier CSV qui peut être facilement importé dans un tableur ou lu dans un langage de programmation.

Vous pouvez également créer un webhook qui enverra automatiquement des données à votre candidature chaque fois qu'un nouveau contact est ajouté ou mis à jour.

Malgré ces deux caractéristiques, il peut arriver que votre application ait besoin d'accéder aux données à la demande. Nous'montrons comment le faire en utilisant PHP.

Tout d'abord, configurez votre connexion API à partir de votre script :

define("ACTIVECAMPAIGN_URL", "https://ACCOUNT.api-us1.com") ;
define("ACTIVECAMPAIGN_API_KEY", "0c3b245df4785...005d2d3d7e1e386f") ;
require_once("activecampaign-api-php/includes/ActiveCampaign.class.php") ;
$ac = nouvelle campagne active (ACTIVECAMPAIGN_URL, ACTIVECAMPAIGN_API_KEY) ;

Ensuite, nous'allons créer une fonction qui traite la demande d'API et ajoute chaque contact à un tableau global. La fonction accepte un numéro de page, ainsi que des ID's de liste optionnels (si vous souhaitez demander des contacts uniquement à partir de certaines listes), et renvoie le nombre total de contacts trouvés pour la page demandée.

$GLOBALS["contacts"] = array() ; // Contient tous les contacts.

function run($page, $listids = 0) {

  // Méthode API.
  $request = "contact/liste" ;

  // Vérifiez le filtre de la liste. S'il n'y en a pas, demandez tous les contacts.
  si ($listids)
    $request .= "?filters[listid]={$listids}" ;
  sinon
    demande = "?ids=all" ;

  // Faire une demande.
  $request .= "&full=0&sort=id&sort_direction=ASC&per_page=500&page={$page}" ;
  $response = $GLOBALS["ac"]->api($requête) ;

  // Compteur interne.
  Compte $ = 0 ;

  // Si la demande revient avec succès.
  si ((int)$réponse->succès) {

    // Faites une boucle avec chaque élément.
    foreach ($réponse comme $clé = > $valeur) {

      // S'il y a un email, nous savons qu'il s'agit d'un contact.
      if (isset($value->email)) {

        $count++ ; // Augmenter le compteur interne.

        // Stocker ce contact dans le tableau global.
        if (!isset($GLOBALS["contacts"][$value->id]) {
          $GLOBALS["contacts"][$value->id] = $value ;
        }

      }

    }

  }
  else {

    // Demande rejetée. Produisez la raison.
    echo $response->error ;

  }

  retourner $count ;

}

Comme vous pouvez le voir ci-dessus (en surbrillance), nous ajoutons chaque contact à un tableau global ($contacts). Voici un exemple de fiche de contact :

stdClass Object
(
  [id] = > 29564
  [subscriberid] = > 29564
  [cdate] = > 2012-12-14 09:01:00
  [sdate] = > 2012-12-14 09:01:00
  [prénom] = > Mike
  [nom_famille] = > Smith
  [email] = > test@test.com
  [last_list] = > Liste des récompenses
  [avatar_url] = > _COPY7@test.com&s=50
)

Vous'llera également vu ci-dessus que nous limitons les résultats à 100 par page. C'est le montant maximum que vous pouvez recevoir pour chaque page. Pour demander les pages suivantes, nous'ajouterons un peu plus de code :

$page_start = 1 ; // La page de départ.
$page_end = 1 ; // La page à laquelle se terminer.
$page_loop = 0 ;
$listids = 9 ; // Tout filtre de liste (utilisez le format séparé par des virgules pour plus d'une liste : 1,2)

while (($page_start + $page_loop) <= $page_end) {
  $page_current = $page_start + $page_loop ;
  $count = run($page_current, $listids) ;
  $page_loop++ ;
  sommeil(3) ;
}

La boucle ci-dessus va automatiquement chercher la page suivante de contacts jusqu'à ce qu'elle atteigne la dernière page que vous avez spécifiée. Vous pouvez facilement trouver votre dernière page en divisant le nombre total de contacts de votre compte par 100. Par exemple, si vous avez ~1 000 contacts - il vous faudrait environ 10 pages pour les récupérer tous.

$page_start = 1 ; // La page de départ.
$page_end = 10 ; // La page à laquelle se terminer.
...

Vous pouvez également changer la boucle pour ne regarder que le nombre total de retours ($count) :

alors que ($count == 100) ...

De cette façon, vous n'allez chercher la page suivante que si la page actuelle a le montant maximum restitué. Si la page actuelle a moins que le montant maximum, vous savez que c'est la dernière page. Nous avons trouvé cette approche un peu moins fiable et moins flexible que notre exemple initial, mais c'est à vous de décider comment vous voulez la gérer.

Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 0 sur 4

Have more questions? Submit a request

Start free trial