Question

Je suis en train d'écrire une application sur la plate-forme SalesForce qui peut tirer une liste de contacts à partir d'un rapport et de les envoyer à un service Web (dire leur envoyer un e-mail ou SMS)

La seule façon que je peux sembler trouver pour ce faire est d'ajouter les résultats du rapport à une campagne nouvellement créée, et l'accès puis cette campagne. Cela semble être le long chemin autour.

Chaque message que je lis en ligne dit que vous ne pouvez pas accéder aux rapports par Apex, mais la plupart ou tous ces postes ont été écrites avant la version 20 de l'API a été publié le mois dernier, qui a introduit un nouvel objet de rapport. Je peux maintenant d'info programme d'accès d'un rapport (tel que la date dernière course, etc) mais je ne peux toujours pas sembler trouver un moyen d'accéder aux données de résultats contenus dans ce rapport.

Est-ce que quelqu'un sait s'il y a une façon de le faire?

Était-ce utile?

La solution

Après beaucoup de recherches sur, je l'ai découvert la seule façon de le faire en ce moment est en effet gratter le document CSV. Je suppose que Conga etc utilisent exactement cette méthode.

Nous avons fait cela pendant un certain temps maintenant, et cela fonctionne. Les seules mises en garde sont les suivants:

  • Salesforce nom d'utilisateur / mot de passe / jeton de sécurité doit être partagée l'application de connexion. Si le mot de passe les changements (et par défaut, il est modifié tous les 30 jours environ) le jeton aussi les changements et, doit être réintroduite.

  • Vous devez connaître l'hôte du compte, ce qui peut être difficile à obtenir le droit. Par exemple alors que la plupart des comptes européens utiliseraient emea.salesforce.com au format CSV d'accès, notre compte utilise nd7 (Amérique du Nord 7), même si nous sommes situés dans Irlande. J'envoie actuellement l'hôte de la page à l'application et l'analyser pour calculer le sous-domaine correct à utiliser, mais je pense qu'il doit y avoir une une meilleure façon de le faire.

Salesforce a vraiment besoin de régler ce problème en alimentant un appel API qui permet aux résultats du rapport personnalisé à exporter à la volée et qui nous permet d'utiliser OAuth pour s'y connecter. Mais bien sûr, il est peu probable de se produire.

Autres conseils

Dans la SalesforceSpring 11 mise à jour, il semble que vous pouvez obtenir plus d'informations sur les rapports: Comme indiqué dans l'API pour Rapport et ReportType , vous pouvez accéder via Apex les champs utilisés dans la requête par le rapport, la lecture du champ " colonnes ", ainsi que le champ utilisé pour représenter les filtres appelés " filtre ".

Itère ces objets, devrait vous permettre de construire une chaîne représentant la même requête du rapport. Après la construction de cette chaîne vous pouvez faire une requête dynamique avec un appel Database.query (..).

Il semble être un peu désordonné, mais devrait fonctionner .. (pas encore testé!)

Comme les états d'en-tête, cela ne fonctionne qu'avec des rapports personnalisés!

Juste pour clarifier des autres rookies qui trouveront cela, lorsque la question a été posée, vous pouvez accéder à vos données de rapport programatically, mais il fallait utiliser des méthodes aki, sujette à l'erreur.

Tout cela est fixe, vous pouvez accéder à vos rapports via l'API que l'hiver '14.

Documentation ici - http://www.salesforce.com/ nous / développeur / docs / api_analytics / index.htm

Aller à la ville sur les tableaux de bord personnalisés, etc. Croix de la pile posté Salesforce Echange - https://salesforce.stackexchange.com/questions/337/can-report-data-be-accessed-programatically/

Mais Conga (appextremes) faire dans leur produit QuickMerge, où les utilisateur spécifie le rapport Id, et le script sommet sur la page exécute le rapport pour extraire les résultats pour une opération de publipostage.

l'API v20.0 métadonnées ajoutées sur les rapports, mais aucun moyen de diriger effectivement le rapport et obtenir les résultats. Si cela est un rapport standard, ou un rapport que vous avez défini, vous pouvez travailler l'équivalent requête SOQL pour votre rapport et d'exécuter, mais si son un rapport défini par l'utilisateur final, il n'y a aucun moyen de le faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top