LoginSignup
4
1

More than 5 years have passed since last update.

Analytics のカスタムアクションでレコードを取得する

Last updated at Posted at 2019-01-29

Analytics のカスタムアクション

Analytics では、テーブルウィジェットから任意の Visualforce ページを開くカスタムアクションを作成出来ます。Visualforce ページには SAQL 文が渡され、Analytics の Rest リソースにアクセスする事で、テーブルに表示されているレコードを取得する事ができます。

ユースケース

Salesforce の公式のヘルプでは、テーブルに表示される取引先に対し、Visualforce と Apex を使って一括で商談を作成する処理が紹介されています。
SALESFORCE ヘルプ - Analytics から複数の Salesforce レコードへの一括アクションの実行

サンプルコードと設定

Analytics から渡された SAQL の表示とレコードの取得を行う Visualforce ページと Apex のサンプルです。

SampleCustomActionPage.vfp
<apex:page controller="SampleCustomActionPageController" >
    <script>
    // SAQL クエリを取得し、エンコードしておく。
    const query = '{!JSENCODE(query)}';
    console.log(query);        

    // Analytics の REST リソースに対しクエリの発行をリクエストする。
    // 結果からレコードリストを取り出し、コンソールに出力する。
    fetch('https://[yourdomain]/services/data/v44.0/wave/query', {
        method: 'POST', 
        headers: {
            'Authorization': 'Bearer {!$Api.Session_ID}',
            'Content-Type': 'application/json'
        }, 
        body: JSON.stringify({'query': query})
    })
    .then(function(response) { return response.json(); })
    .then(function(json) { console.log(json.results.records); })
    </script>
</apex:page>
SampleCustomActionPageController.apxc
public class SampleCustomActionPageController {
    public String getQuery() { // 今回はゲッターのみ作成。VF からは {!query} でアクセス
        return ApexPages.currentPage().getParameters().get('query');
    }
}

作成した Visualforce ページをカスタムアクションとして登録

Screen_Shot_2019-01-29_at_15_45_04.png

実行結果

  • コンソールの出力結果は以下の通り。
    • 1 行目は SAQL 文
    • 2 行目はレコードの取得結果です。

Screen Shot 2019-01-29 at 15.51.29.png

注意点

  • テーブルウィジェットで表示するレコード数は、デフォルトで 100 件(q = limit q 100)となっているが、UI 上の設定で変更で最大 10000 件(q = limit q 10000)まで取得出来ます。
  • 10000 件以上取得したい場合は、取得したい件数で SAQL 文を変更する必要があります。
変更前: q = load "XXXXX/XXXXX"; q = foreach q generate 'Id' as 'Id'; q = limit q 100;
変更後: q = load "XXXXX/XXXXX"; q = foreach q generate 'Id' as 'Id'; q = limit q 20000;
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1