Как получить программный доступ к отчетам в SalesForce с помощью Apex

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

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

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

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


person roryok    schedule 25.11.2010    source источник
comment
Понятия не имею... но насколько сложен отчет? Вероятно, вы можете легко написать запрос SOQL, который будет генерировать тот же набор результатов, и его можно будет без проблем отправить куда угодно. Еще один вариант заключается в том, что вы можете создать информационную панель из этого отчета, запланировать ее запуск (ежедневно?) и отправить результаты по электронной почте на какой-то специальный почтовый ящик...   -  person eyescream    schedule 25.11.2010
comment
нет, это должно быть по запросу. Думаю, мне придется пойти по пути экспорта CSV/XLS, описанному здесь sfdc-heretic.warped-minds.com/2006/04/10/   -  person roryok    schedule 26.11.2010


Ответы (5)


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

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

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

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

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

person roryok    schedule 15.04.2011

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

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

Это кажется немного грязным, но должно работать .. (ЕЩЕ НЕ ТЕСТИРОВАНО!)

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

person xedxgex    schedule 06.05.2011
comment
не так беспорядочно, как хранение полных учетных данных Salesforce для каждого пользователя, вход в систему под своей учетной записью, экспорт CSV-файла отчета, анализ этого CSV-файла и возврат столбца. Я попробую, спасибо! - person roryok; 09.05.2011
comment
Изучив это, выясняется, что к API метаданных нельзя получить доступ из APEX, поэтому требуется почти такое же решение — внешнее приложение, которое подключается. - person roryok; 09.05.2011
comment
или использовать вызов от отдела продаж через собственный API? - person ebt; 26.04.2012

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

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

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

Отправляйтесь в город на этих настраиваемых информационных панелях и т. д. Перекрестная публикация из Salesforce Stack Exchange — https://salesforce.stackexchange.com/questions/337/can-report-data-be-accessed-programmatically/

person Joshua Dance    schedule 15.10.2014

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

person matt    schedule 14.04.2011

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

person superfell    schedule 25.11.2010
comment
К сожалению, это будет отчет, определяемый конечным пользователем =( - person roryok; 26.11.2010