Adobe Analytics

Adobe Analytics: SegmentsAPIを使って大量のセグメント設定を作成・更新する

こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。

今回はAdobe Marketing Cloud / Adobe AnalyticsのSegments APIを使ってセグメントを操作する方法についてです。
大量のセグメント設定を一括で作成・変更する際にはAPIを使えばあっという間です。

Segments API 1.4

Adobe Developer ConnectionでApplication登録を行う

まずはApplication登録を行う必要があります。

1. Developer Connectionにアクセスして、AdobeIDでログインします。
2. [Developer Tools] > [Applications] を開き、[+Add]をクリックします。
3. 必要項目を入力します。
アプリの名前と、Orgと、スコープが必須項目です。スコープはSegmentsだけあればOKです。

4. Create をクリックすると、[Application ID]と[Application Secret]の2つが表示されるので、メモしておきます。後ほどOAuth2認証の時に使います。

APIを実装したプログラムを作る

AdobeのAPIの認証方法は、かつてはWSSE認証を使ってました。
しかし現在はOAuth2.0認証がサポートされてます。

というわけで、
1. OAuth2認証でtokenを取得
2. tokenを使ってセグメント一覧を取得
3. 取得したセグメントを編集後、tokenを使って保存
以上を行うためのAPI実装をしてみます。

requestパッケージとnode-rest-clientパッケージを使うので、npmでインストールしておきます。

$ npm install request --save
$ npm install node-rest-client --save

まずはOAuth2認証をしてtokenを取得します。

/* token.js */
var request = require('request');

var headers = {
    'Content-Type' : 'application/x-www-form-urlencoded'
};
 
var options = {
    url : 'https://api.omniture.com/token',
    method : 'POST',
    headers : headers,
    auth : {
        user : "xxxxx", // [ApplicationID]
        password : "yyyyy" // [ApplicationSecret]
    },
    json : true,
    form : {
        'grant_type' : 'client_credentials'
    }
};

request(options, function (error, response, body) {
    var token = body.access_token;
    console.log(token);
});

実行すると、OAuth2認証が実行されてtokenが帰ってきます。
tokenの有効期限は3600秒、つまり1時間あります。
以降のAPIコールの際にtokenを使い回すために、シェル変数に保存しておきます。

$ token=`node token.js`

次は、セグメント一覧を取得するAPIを実装します。tokenを引数で受け取って、Segments.Getに渡します。
取得した一覧は、segment.jsonファイルに保存されます。

/* get.js */
var token = process.argv[2];

var fs = require('fs');
var output = 'segments.json';

var Client = require('node-rest-client').Client;
var client = new Client();

var args = { 
    headers: {
        'Authorization' : 'Bearer ' + token,
        'Content-Type' : 'application/json'
    },
    parameters: {
        method: "Segments.Get"
    },
    data: {
        accessLevel: "owned",
        fields: [
            "definition",
            "reportSuiteID"
        ]
    }
};

client.post("https://api.omniture.com/admin/1.4/rest/", args, function (data, response) {
    fs.writeFile(output, JSON.stringify(data, null, 2), function(err) {
        if(err) {
            console.log(err);
        } else {
            console.log("JSON saved to " + output);
        }
    }); 
});

実行するときはこのようにします。

$ node get.js $token

これによって出来上がったsegments.jsonは、以下のようなJSONファイルになってます。
各セグメント設定が配列形式でおさまってるJSONです。

[
  {
    "id": "xxxxx",
    "name": "初回訪問",
    "reportSuiteID": "exturexturedev",
    "definition": {
      "container": {
        "type": "visits",
        "rules": [
          {
            "name": "Visit Number",
            "element": "visitnumber",
            "operator": "equals",
            "value": 1
          }
        ]
      }
    }
  },
  {
    "id": "yyyyyy",
    "name": "訪問者:検索エリア:沖縄",
    "reportSuiteID": "exturexturedev",
    "definition": {
      "container": {
        "type": "visitors",
        "rules": [
          {
            "name": "Custom eVar 1",
            "element": "evar1",
            "operator": "equals",
            "value": "okinawa"
          }
        ]
      }
    }
  }// (中略)
]

このjsonファイルを編集して、書き換えたいところを書き換えたり、
新たな設定を追加します。
新規のセグメント設定を追加する場合は、idは不要で、その他のフィールドのみ記入します。

そして今度はそのJSONファイルを食わせて、セグメント設定を一括更新するためのプログラムを書いてみます。

/* save.js */
var token = process.argv[2];

var fs = require('fs');
var json = JSON.parse(fs.readFileSync('segments.json', 'utf8'));

var request = require('request');

var Client = require('node-rest-client').Client;
var client = new Client();

var args = { 
    headers: {
        'Authorization' : 'Bearer ' + token,
        'Content-Type' : 'application/json'
    },
    parameters: {
        method: "Segments.Save"
    }
};

for (var i=0; i<json.length; i++) {
    args.data = json[i];
    client.post("https://api.omniture.com/admin/1.4/rest/", args, function (data, response) {
        console.log(data) // 保存できたセグメントID
    });
}

実行するときはこのようにします。

$ node save.js $token

save.jsを実行すると、segments.jsonを読み込んで、セグメント設定配列の数だけforループしながらSegments.Saveを実行します。

実行結果はこのようになります。

{ segmentID: 'xxxxxx' }
{ segmentID: 'yyyyyy' }
{ segmentID: 'zzzzzz' }
// 以下略

保存できたセグメントのIDが表示されます。

どんな場面で役にたつか

こんな事で大量のセグメントを手分けして作った事があれば、APIで自動化すれば一発で解決します。

同じようなセグメント設定だが、ディメンションの値だけ異なるバリエーションを何個も作る必要がある

管理画面上でテンプレとなるセグメントを一つ作って、それをAPIで取得してJSONの雛形として利用する。
→ それをディメンションの値の分だけコピーして複製したものをAPIで一括登録

サイトのドメイン変更・URL構成の変更によってセグメントのディメンション設定を何個も直す必要がある

セグメント一覧をAPIで取得して、URL/ドメインの変更になった部分だけ書き換えてAPIで登録しなおす。

というように、自動化すれば時間とリソースをかける作業も一瞬で終わるようになります。
今回はAdobe Marketing Cloud / Adobe AnalyticsのSegments APIをNode.jsで実装したプログラムについてでした。

弊社はAdobe Marketing Cloud関連のAPI実装支援も行なっておりますので、AMCの定期的な処理をAPIで自動化したい!というご要望がございましたらぜひお問い合わせください。
お問い合わせはこちらからどうぞ。

ブログへの記事リクエストはこちらまで

Google Compute Engine のLinuxVMにVNC接続する前のページ

まぐれ次のページ

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Adobe Cloud Platform Auditor

    AdobeSummit 2020レポート: “Connecting Experiences Acro…

    こんにちは。エクスチュアインターン生の上園です!…

  2. Adobe Analytics

    バウンスとは-Adobe Analyticsの指標説明

    今回はバウンスについて説明いたします。バウンスとはサイトを訪問した…

  3. Adobe Analytics

    レポートビルダーを使ってデータを出す方法

    こんにちは!インターンの藤本です。今日はレポートビルダーを使ってデー…

  4. Adobe Analytics

    Adobe AEP SDKでReactNativeアプリを計測する (Android編)

    こんにちは、エクスチュアの権泳東(コン・ヨンドン)です。今回は…

  5. Google BigQuery

    GCP: 今月のGCP課金額をslackに自動的に書き込む

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  6. Adobe Analytics

    Adobe AnaltyicsとGoogle Analytics の「生Webビーコン」をBigQu…

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

カテゴリ
最近の記事
  1. Adobe WebSDK クロスドメイン計測【第2部】FPI…
  2. Adobe WebSDK クロスドメイン計測【第1部】ECI…
  3. Adobe Target Recommendations:g…
  4. Conversational Analytics APIでお…
  5. Looker Studioで日付フィルターの開始日・終了日の…
  1. dbt

    dbt Cloud使ってみた
  2. Adobe Analytics

    Azure DatabricksでAdobe AnalyticsのDatafee…
  3. Google Analytics

    【GA4】推奨イベント・カスタムイベントの設定方法
  4. Tableau

    Tableauのリレーションシップを理解して過剰結合を防ぐ
  5. Amazon Web Services

    セキュリティグループ vs ネットワークACL
PAGE TOP