Google 広告スクリプトは、Google Ads API で利用できる一般的な変更をサポートしています。GoogleAdsService.mutate
から実行できるオペレーションのほとんどは、キャンペーンの作成や管理など、Google 広告スクリプトでも実行できます。
この機能を利用すると、Google Ads API の大部分にアクセス可能となるため、この機能を使用するには Google Ads API の規則の基本を理解しておくことが重要です。開発者トークンや認証など、多くの処理は Google 広告スクリプトによって処理されるため、スキップできますが、有効な変更リクエストを作成する必要があります。
このガイドに進む前に、Google Ads API REST インターフェースの基本的なリソースをご確認ください。
基本的な例
この機能を説明するために、キャンペーン予算を作成する次の基本的な例について考えてみましょう。
const budgetResult = AdsApp.mutate({
campaignBudgetOperation: {
create: {
amountMicros: 10000000,
explicitlyShared: false
}
}
});
AdsApp.mutate
の呼び出しは、単一の MutateOperation
を表す JSON オブジェクトを受け取ります。このオブジェクト内で、実行するオペレーションの種類(この場合は campaignBudgetOperation
)を指定します。次に、create
、remove
、または update
と updateMask
の両方を指定します。create
と update
内の具体的なフィールドは、操作しているリソースの種類によって異なります。
オペレーションを構築する
有効なオペレーションを構築するために使用できる戦略はいくつかあります。キャンペーンの予算の例を言えば、キャンペーン予算の REST リファレンス ドキュメントを参照して、すべての有効なフィールドのリストを確認してから、適切なフィールドに入力するか、スクリプトにカスタム JavaScript コードを記述して、適切なオブジェクトを作成できます。
または、キャンペーン予算の「試してみる」機能を使用して、オペレーションを動的に作成することもできます。この機能では、追加するフィールドを選択することでリクエスト本文を動的に作成できます。次に、生成された結果からオペレーションの内容を抽出し、オペレーションのタイプを指定した後、それを mutate
呼び出しに追加できます。
オペレーション タイプ
作成
オペレーションで create
を指定し、作成するリソースのオブジェクト表現を渡します。
上記の create
オペレーションの例をご覧ください。
削除
オペレーションで remove
を指定し、削除するリソースのリソース名を渡します。次に例を示します。
AdsApp.mutate({
adGroupOperation: {
remove: "customers/[CUSTOMER_ID]/adGroups/[AD_GROUP_ID]"
}
});
エンティティのリソース名がわからない場合は、Adsapp.search
リクエストを使用して取得できます。
更新
更新するオブジェクトをシステムが決定できるように、オペレーションで update
を指定し、リソース名を指定したオブジェクトを渡します。さらに、値を更新するフィールドをすべて入力し、このリクエストで変更するフィールドを正確に示す updateMask
を指定します。更新マスクにリソース名を含めないでください。
update
オペレーションの例:
const campaignResult = AdsApp.mutate({
campaignOperation: {
update: {
resourceName: "customers/[CUSTOMER_ID]/campaigns/[CAMPAIGN_ID]",
status: "PAUSED",
name: "[Paused] My campaign"
},
updateMask: "name,status"
}
});
結果の処理
オペレーションのタイプに関係なく、戻り値は MutateResult
です。返されたリソース名を使用して、変更後のリソースの現在の状態をクエリし、オペレーションが成功したかどうか、エラーが発生した場合は発生したエラーを確認できます。
次の例は、結果を確認してログに情報を出力する基本的なフローを示しています。
const result = AdsApp.mutate( ... );
if (result.isSuccessful()) {
console.log(`Resource ${result.getResourceName()} successfully mutated.`);
} else {
console.log("Errors encountered:");
for (const error of result.getErrorMessages()) {
console.log(error);
}
}
複数のオペレーション
Google 広告スクリプトでは、AdsApp.mutateAll
メソッドを使って、1 回のリクエストでの複数のオペレーションの変更もサポートされています。1 回のリクエストで完全なキャンペーン階層を作成するなど、相互に依存するエンティティを作成できます。オペレーションのセット全体をアトミックにすることもできます。この場合、いずれかのオペレーションが失敗した場合、何も実行されません。
戻り値は、指定したオペレーションごとに 1 つ、初期オペレーションと同じ順序で MutateResult
オブジェクトの配列になります。
この機能は Google Ads API の機能と同様に機能するので、一時 ID とその他の考慮事項について詳しくは、Google Ads API のベスト プラクティス ガイドをご覧ください。このガイドではフィールド名の表現に snake_case
を使用していますが、Google 広告スクリプトのドキュメントでは lowerCamelCase
を使用しています。どちらのケースも Google 広告スクリプトで使用できるため、このガイドから直接コードをコピーできます。
1 回のリクエストで複数のオペレーションを実行するには、すべてのオペレーションを配列に収集して、AdsApp.mutateAll
を呼び出します。mutateAll
呼び出しは、オペレーションの配列を 1 つ目の引数として受け取り、オプションの 2 つ目の引数として以下を取ります。
apiVersion
: スクリプトのデフォルト以外のバージョンを使用する場合は、カスタム API バージョン(V16
など)を指定できます。その時点で、一般公開されている任意のバージョンを使用できます。partialFailure
: このフィールドのデフォルトはtrue
です。true
に設定すると、有効なオペレーションが実行され、失敗したオペレーションはエラーを返します。false
に設定すると、いずれかのオペレーションが失敗した場合、オペレーションは実行されず、実質的にこのオペレーション セットはアトミックになります。
アトミック リクエストでキャンペーンの予算、キャンペーン、広告グループを作成する複数のオペレーションの例を以下に示します。
const operations = [];
const customerId = 'INSERT_CUSTOMER_ID_HERE';
const budgetId = `customers/${customerId}/campaignBudgets/-1`;
const campaignId = `customers/${customerId}/campaigns/-2`;
operations.push({
campaignBudgetOperation: {
create: {
resourceName: budgetId,
amountMicros: 10000000,
explicitlyShared: false
}
}
});
operations.push({
campaignOperation: {
create: {
resourceName: campaignId,
name: 'New Campaign ' + new Date(),
advertisingChannelType: 'SEARCH',
manualCpc: {},
campaignBudget: budgetId,
advertisingChannelType: 'DISPLAY',
networkSettings: {
targetContentNetwork: true
}
}
}
});
operations.push({
adGroupOperation: {
create: {
campaign: campaignId,
name: 'New AdGroup ' + new Date(),
optimizedTargetingEnabled: true
}
}
});
const results = AdsApp.mutateAll(
operations, {partialFailure: false});