クライアント センター(MCC)スクリプト

AdWords スクリプトの MccApp クラスでは、クライアント センター アカウントにリンクされているアカウントを管理できます。すべてのアカウントを 1 つのスクリプトで管理できるため、アカウントごとに別々のスクリプトを作成する必要がありません。一般的な用途としては、クライアント センター単位でのレポート作成などがあります。クライアント センターにおけるその他の使用例については、ソリューション センターをご覧ください。

アカウントのリストの取得

クライアント センターにリンクされているすべてのアカウント(AdWords Express アカウントを除く)を取得するには、次のように accounts メソッドを使用します。

var accountSelector = MccApp.accounts()
    .withCondition("Impressions > 100")
    .forDateRange("LAST_MONTH")
    .orderBy("Clicks DESC");

var accountIterator = accountSelector.get();

デフォルトでは、クライアント センターの階層に含まれるすべてのクライアント アカウントが取得されます。取得するアカウント数を制限するには、ManagedAccountSelector クラスの withLimit メソッドを使います。その他に、withIds メソッドを使ってお客様 ID でアカウントを選択する方法があります。次のとおりです。

var accountSelector = MccApp.accounts()
    .withIds(['918-501-8835', '320-368-4437', '925-591-3280']);

クライアント アカウントの操作

クライアント アカウントの取得後、ManagedAccountIteratorhasNext メソッドと next メソッドを使って、反復処理を実行できます。クライアント アカウントに対する実行コンテキストを切り替えるには、select メソッドの使用が必要です。クライアント アカウントの選択後は、それ以降のすべての API 呼び出しは、別のアカウントを明示的に選択しない限り、選択されたアカウントに対して適用されます。次の例をご覧ください。

// Keep track of the MCC account for future reference.
var mccAccount = AdWordsApp.currentAccount();

// Select your accounts
...

// Iterate through the list of accounts
while (accountIterator.hasNext()) {
  var account = accountIterator.next();

  // Select the client account.
  MccApp.select(account);

  // Select campaigns under the client account
  var campaignIterator = AdWordsApp.campaigns().get();

  // Operate on client account
  ...
}

// Switch back to MCC account
MccApp.select(mccAccount);

複数アカウントの並列操作

AdWords スクリプトでは、ManagedAccountSelector クラスの executeInParallel メソッドを使うことで、複数のクライアント アカウントの並列操作が可能です。executeInParallel メソッドには以下のシグネチャが含まれます。

function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);

executeInParallel メソッドは、ManagedAccountSelector に一致する各 ManagedAccountfunctionName で指定された関数を実行します。すべてのアカウントの処理が完了すると、コールバック関数が 1 回実行され(optionalCallbackFunctionName で指定されている場合)、すべての応答オブジェクトの配列が、それ以降のすべての処理の引数として渡されます。一般的な使用方法は次のとおりです。

function main() {
  var accountSelector = MccApp.accounts()
      .withLimit(50)
      .withCondition("Impressions > 100")
      .forDateRange("LAST_MONTH")
      .orderBy("Clicks DESC");

  accountSelector.executeInParallel("processClientAccount", "afterProcessAllClientAccounts");
}

function processClientAccount() {
  var clientAccount = AdWordsApp.currentAccount();

  // Process your client account here.
  ...

  // optionally, return a result, as a text.
  return "";
}

function afterProcessAllClientAccounts(results) {
  for (var i = 0; i < results.length; i++) {
    var result = results[i].getReturnValue();
    // Process the result further
    …
  }
}

functionName で指定された関数は、オプションで文字列引数(optionalInput)を受け入れることができます。このパラメータを使って、executeInParallel メソッドにより呼び出されるすべての並列処理メソッドに、追加のパラメータを渡すことができます。次の例をご覧ください。

function main() {
  var accountSelector = MccApp.accounts().withIds([1234567890, 3456787890]);
  var sharedParameter = "INSERT_SHARED_PARAMETER_HERE";
  accountSelector.executeInParallel("processClientAccount", null, sharedParameter);
}

function processClientAccount(sharedParameter) {
  // Process your client account here.
  ...
}

アカウント固有の設定を含む JavaScript 構成オブジェクトを渡す場合は、JSON.stringify メソッドを使ってオブジェクトを文字列に変換できます。次の例をご覧ください。

function main() {
  ...
  var accountFlags = {
    '1234567890': {
       'label': 'Brand 1 campaigns',
     },
    '3456787890': {
       'label': 'Brand 2 campaigns',
     }
  };
  accountSelector.executeInParallel("processClientAccount", null,
      JSON.stringify(accountFlags));
  ...
}

function processClientAccount(sharedParameter) {
  var accountFlags = JSON.parse(sharedParameter);
  // Process your client account here.
  ...
}

functionName で指定された関数は、オプションで文字列を返すこともできます。JavaScript オブジェクトを返す場合は、JSON.stringify メソッドを使ってオブジェクトを文字列に変換できます。次の例をご覧ください。

function processClientAccount() {
  ...
  var jsonObj = {value: 10, list: [1,2,3,4,5,6], name: "Joe Smith"};
  return JSON.stringify(jsonObj);
}

返された値は、ExecutionResult オブジェクトのリストにあるコールバック関数に渡されます。関数から JSON 文字列を返す場合は、JSON.parse メソッドを使って文字列を JavaScript オブジェクトに変換し直すことができます。次の例をご覧ください。

function callbackFunctionName(results) {
  for (var i = 0; i < results.length; i++) {
    var resultObj = JSON.parse(results[i].getReturnValue());
  }
}

executeInParallel メソッドでは、最大 50 アカウントに対する操作が可能です。このため、スクリプトが取得するアカウント数の制限を独自に実装する必要があります。スクリプトが取得するアカウント数を制限するには、ManagedAccountSelector クラスの withLimit メソッドや withIds メソッドを使います。

実行時間の制限

クライアント センターの実行時間の制限について、詳しくはこちらのページをご覧ください。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。