Apexを使用してSalesforceでプログラムでレポートにアクセスする方法
-
28-09-2019 - |
質問
レポートから連絡先のリストを引き出してWebサービスに送信できるSalesforceプラットフォームにアプリを作成しようとしています(たとえば、電子メールまたはSMSを送信するなど)
これを行うことができると思われる唯一の方法は、レポートの結果を新しく作成したキャンペーンに追加し、そのキャンペーンにアクセスすることです。これは長い道のりのようです。
オンラインで読んだすべての投稿によると、Apexを介してレポートにアクセスできないと述べていますが、これらの投稿のほとんどまたはすべてが先月リリースされたAPIのバージョン20がリリースされ、新しいレポートオブジェクトが導入された前に書かれています。レポートに関する情報(最後の実行など)に関する情報にプログラム的にアクセスできるようになりましたが、そのレポートに含まれる結果データにアクセスする方法を見つけることができないようです。
それを行う方法があるかどうか誰もが知っていますか?
解決
それについて多くの研究の後、私は現時点でこれを行う唯一の方法が実際にCSVドキュメントを削ることであることを発見しました。コンガなどはまさにこの方法を使用していると思います。
私たちはこれをしばらく行ってきましたが、うまくいきます。唯一の注意事項は次のとおりです。
Salesforceユーザー名 /パスワード /セキュリティトークンは、接続するアプリに共有する必要があります。パスワードが変更された場合(デフォルトでは30日ごとに変更されます)、トークンも変更され、再入力する必要があります。
アカウントのホストを知る必要があります。たとえば、ほとんどのヨーロッパのアカウントはemea.salesforce.comを使用してCSVにアクセスしますが、当社のアカウントはアイルランドに位置していてもNA7(北米7)を使用します。現在、ページホストをアプリに送信し、使用する正しいサブドメインを計算するために解析しますが、これを行うにはより良い方法が必要だと思います。
Salesforceは、カスタムレポートの結果をその場でエクスポートできるようにし、OAuthを使用して接続できるようにすることで、実際にこれを整理する必要があります。しかし、もちろん、これは起こりそうにありません。
他のヒント
salesforcespring 11アップデートでは、レポートに関するより多くの情報を取得できるようです。 報告する と ReportType, 、Apexを介して、レポートでクエリで使用されているフィールドにアクセスでき、フィールドを読み取ります」列「、呼ばれるフィルターを表すために使用されるフィールド」フィルター".
このオブジェクトを繰り返して、レポートの同じクエリを表す文字列を作成できるようにする必要があります。その文字列を構築した後、データベースを使用して動的クエリを作成できます。
それは少し乱雑なようですが、動作するはずです..(まだテストされていません!)
ヘッダーが述べているように、これはカスタムレポートでのみ機能します!
これを見つける仲間のルーキーを明確にするために、質問が尋ねられたとき、レポートデータにプログラムでアクセスできますが、ハッキーでエラーが発生しやすいメソッドを使用する必要がありました。
これはすべて修正されています。14冬の時点で、APIを介してレポートにアクセスできるようになりました。
ここのドキュメント - http://www.salesforce.com/us/developer/docs/api_analytics/index.htm
これらのカスタムダッシュボードなどの町に行きます。SalesforceStackExchangeから投稿されたクロス - https://salesforce.stackexchange.com/questions/337/can-report-data-be-accessed-programtely/
ただし、CONGA(AppExtremes)はQuickMerge製品でこれを行います。ここでは、ユーザーがレポートIDを指定し、ページ上のAPEXスクリプトがレポートを実行して、Mail Merge操作の結果を抽出します。
V20.0 APIはレポートについてメタデータを追加しましたが、実際にレポートを実行して結果を取得する方法はありませんでした。これが標準レポートである場合、または定義したレポートである場合、レポートの同等のSOQLクエリを作成して実行できますが、エンドユーザー定義レポートの場合、これを行う方法はありません。