Как я могу получить доступ к отчетам программно в Salesforce, используя APEX
-
28-09-2019 - |
Вопрос
Я пытаюсь написать приложение на платформе Salesforce, которая может вытащить список контактов из отчета и отправить их в веб-сервис (скажем, чтобы отправить им электронное письмо или смс)
Единственный способ, которым я могу найти, чтобы сделать это, это добавить результаты отчета в вновь созданную кампанию, а затем получить доступ к этой кампании. Это похоже на долгий путь.
Каждый пост, который я читал онлайн говорит, что вы не можете получить доступ к отчетам через APEX, однако большинство или все эти посты были написаны до того, как версия 20 API была выпущена в прошлом месяце, который ввел новый объект отчета. Теперь я могу программно получить доступ к информации о отчете (например, дату последнего запуска и т. Д.) Но я до сих пор не могу найти способ получить доступ к данным результата, содержащихся в этом отчете.
Кто-нибудь знает, есть ли способ сделать это?
Решение
После многих исследований в этом я обнаружил единственный способ сделать это в данный момент действительно соскребает документ CSV. Я думаю, что Conga etc использует именно этот метод.
Мы делаем это на некоторое время, и это работает. Единственные предостережения:
Salesforce Имя пользователя / Пароль / токен безопасности должны быть переданы подключением приложения. Если пароль изменяется (и по умолчанию изменяется каждые 30 дней или около того) токен также меняется и должен быть введен в систему.
Вы должны знать хост аккаунта, который может быть трудно получить правильно. Например, в то время как большинство европейских счетов будут использовать Emea.salesforce.com для доступа к CSV, наша учетная запись использует Na7 (Северная Америка 7), хотя мы находимся в Ирландии. В настоящее время я отправляю страницу Host в приложение и расставив его, чтобы рассчитать правильную поддомен, чтобы использовать, но я думаю, что должен быть лучший способ сделать это.
Salesforce действительно необходимо отсортировать это, поставляя вызов API, который позволяет экспортировать пользовательские результаты отчета на лету и позволять нам использовать OAuth для подключения к нему. Но, конечно, это вряд ли произойдет.
Другие советы
В обновлении SalesForcepring 11, похоже, вы можете получить больше информации о отчетах: как указано в API для Отчет а также Тип отчета, вы можете получить доступ через Apex на полях, используемых в запросе отчета, чтение поля »колонны«Как и поле, используемое для представления фильтров под названием«фильтр".
Итализация через эти объекты, должна позволить вам создать строку, представляющую тот же запрос отчета. После создания этой строки вы можете сделать динамический запрос с помощью базы данных.
Похоже, немного грязно, но должен работать .. (еще не проверено!)
Как утверждает заголовок, это работает только с пользовательскими отчетами!
Просто чтобы уточнить для новичков, которые найдут это, когда вопрос спросил, вы можете получить доступ к вашему докладу в программные данные, но вам пришлось использовать некоторые хижины, ошибки.
Это все исправлено, теперь вы можете получить доступ к вашим отчетам через API на зиму 14.
Документация здесь - http://www.salesforce.com/us/developer/docs/api_analytics/index.htm.
Перейти в город на этих пользовательских панелях приборов и т. Д. Крест, размещенный из обмена стеками Salesforce - https://salesforce.stackexchange.com/Questions/337/can-report-data-be-accessed-prographication/
Но Conga (AppExtremes) делают это в своем продукте QuickMerge, где пользователь указывает идентификатор отчета, а сценарий APEX на странице запускает отчет для извлечения результатов для операции Mail Merge.
API V20.0 API добавил метаданные об отчетах, но никакого способа фактически запускать отчет и получить результаты. Если это стандартный отчет, или отчет, который вы определены, вы можете разработать эквивалентный запрос SOQL для вашего отчета и запустить, но если его конечный пользовательский отчет отчета, нет способа сделать это.