Как получить доступ к отчетам программно в SalesForce с помощью Apex - PullRequest
4 голосов
/ 25 ноября 2010

Я пытаюсь написать приложение на платформе SalesForce, которое может извлекать список контактов из отчета и отправлять их в веб-службу (скажем, отправить им электронное письмо или SMS)

Единственный способ, который я могу найти, - это добавить результаты отчета во вновь созданную кампанию и затем получить доступ к этой кампании. Это похоже на долгий путь.

В каждом сообщении, которое я читаю онлайн, говорится, что вы не можете получить доступ к отчетам через Apex, однако большинство или все эти сообщения были написаны до того, как в прошлом месяце была выпущена версия 20 API, в которой появился новый объект отчета. Теперь я могу программно получить доступ к информации об отчете (например, дате последнего запуска и т. Д.), Но я все еще не могу найти способ получить доступ к данным результатов, содержащимся в этом отчете.

Кто-нибудь знает, есть ли способ сделать это?

Ответы [ 5 ]

8 голосов
/ 15 апреля 2011

После долгих исследований я обнаружил, что единственный способ сделать это в настоящий момент - это действительно очистить документ CSV. Я предполагаю, что Конга и т.д. используют именно этот метод.

Мы занимаемся этим уже некоторое время, и это работает. Единственные предостережения:

  • Имя пользователя / пароль Salesforce / маркер безопасности должен быть предоставлен приложение подключается. Если пароль изменяется (и по умолчанию он изменяется каждые 30 дней или около того) токен также изменения и должны быть введены повторно.

  • Вы должны знать хост учетной записи, что может быть трудно быть правым. Например, в то время как большинство европейских учетных записей будут использовать emea.salesforce.com для доступа к CSV, наша учетная запись использует na7 (Северная Америка 7), хотя мы находимся в Ирландия. В настоящее время я отправляю страницу хоста в приложение и анализирую его рассчитать правильный поддомен для использования, но я думаю, что должен быть лучший способ сделать это.

Salesforce действительно нужно разобраться с этим, предоставив вызов API, который позволяет экспортировать результаты пользовательских отчетов на лету и позволяет нам использовать OAuth для подключения к нему. Но, конечно, это вряд ли произойдет.

2 голосов
/ 15 октября 2014

Просто чтобы уточнить новичков, которые найдут это, когда был задан вопрос, вы могли получить программный доступ к данным вашего отчета, но вам пришлось использовать некоторые хакерские, подверженные ошибкам методы.

Это все исправлено, теперь вы можете получать доступ к своим отчетам через API начиная с Winter '14.

Документация здесь - http://www.salesforce.com/us/developer/docs/api_analytics/index.htm

Отправляйтесь в город на этих пользовательских инструментальных панелях и т. Д. Кросс опубликован на бирже стеков Salesforce - https://salesforce.stackexchange.com/questions/337/can-report-data-be-accessed-programatically/

2 голосов
/ 06 мая 2011

В обновлении SalesforceSpring 11 вы можете получить больше информации об отчетах: Как указано в API для Report и ReportType , вы можете получить доступ через Apex к полям, используемым в запросе Report, читая поле " columns " а также поле, используемое для представления фильтров, называемое " filter ".

Итерация по этим объектам должна позволить вам создать строку, представляющую один и тот же запрос отчета. После построения этой строки вы можете сделать динамический запрос с помощью вызова Database.query (..).

Кажется, что это немного грязно, но должно работать .. (ЕЩЕ НЕ ПРОВЕРЕНО!)

Как указано в заголовках, это работает только с пользовательскими отчетами!

1 голос
/ 14 апреля 2011

Но Conga (appextremes) делает это в своем продукте QuickMerge, где пользователь указывает идентификатор отчета, а скрипт на вершине запускает отчет, чтобы извлечь результаты для операции слияния.

0 голосов
/ 25 ноября 2010

API v20.0 добавил метаданные об отчетах, но не смог фактически запустить отчет и получить результаты.Если это стандартный отчет или отчет, который вы определили, вы можете обработать эквивалентный запрос SOQL для своего отчета и выполнить его, но если это отчет, определенный конечным пользователем, сделать это невозможно.

...