Google 広告スクリプトでMutateOperationが利用できるようになりました。これによりGoogle 広告APIのほとんどの機能をGoogle 広告スクリプトで実行できるようになりました。
MutateOperationはキャンペーンや広告グループの新規作成や更新、削除を行うための機能です。キャンペーンや広告グループの要素を階層構造で記述することができるので、これまでのGoogle 広告スクリプトの記述よりも分かりやすくなる印象があります。
開発者用ページに記載されているサンプルコードを早速実行してみたところ、何度かエラーが発生。今後MutateOperationを利用することもあるだろうと思い、備忘録として対処方法を記します。
サンプルコードの落とし穴
リリース文から辿れるmutateのセクションには以下のサンプルコード(一部抜粋)が記載されています。広告グループを新規入稿するコードです。
const customerId = AdsApp.currentAccount().getCustomerId();
const campaignId = 12345;
const createAdGroupResponse = AdsApp.mutate(
{
adGroupOperation: {
create: {
campaign: `customers/${customerId}/campaigns/${campaignId}`,
name: 'My Ad Group Name',
cpcBidMicros: '1230000' // $1.23 in micros
}
}
});
サンプルコードですので、このコードをコピーしてGoogle 広告スクリプトを実行してもエラーが発生します。仮に、実際に実行するために最低限変更が必要な箇所を書き換えたとしてもエラーが発生します。
エラーを発生させないための注意点は以下の4つです。
- function main() {}で囲む
- customerIdの『-』削除
- キャンペーンIDは実際のIDに書き換える
- cpcBidMicrosは下六桁を0にする
そして、これらの注意点を反映したコードが下記になります。
function main() {
var customerId = AdsApp.currentAccount().getCustomerId();
var customerId = customerId.replace(/-/g, '');
const campaignId = キャンペーンID; // 実際のキャンペーンIDを記述する
const createAdGroupResponse = AdsApp.mutate(
{
adGroupOperation: {
create: {
campaign: `customers/${customerId}/campaigns/${campaignId}`,
name: '広告グループ名', // 設定したい広告グループ名を記述する
status: 'PAUSED',
cpcBidMicros: '1000000' // 円の場合下六桁を0にする
}
}
});
}
それぞれ解説していきます。
function main() {}で囲む
function main() {}で囲まなくても実行自体はできたので、これはお作法的な対応なのかもしれません。
ただ、囲まないとログで「Ga: Unrecognized function name “main”」と注意されてしまいます。
囲むに越したことはないということで、対応しておくことをおすすめします。
customerIdの『-』削除
これは大きめの落とし穴です。サンプルコードでは下記のような記述がされていますが、これでは不十分でした。
const customerId = AdsApp.currentAccount().getCustomerId();
getCustomerId()を実行すると、『‐(ハイフン)』が含まれたアカウントIDを取得できます。
例)123-456-7890
しかしながら、customerIdを使用する下記の記述においては、『-』が含まれたcustomerIdではエラーが発生することが分かりました。
campaign: `customers/${customerId}/campaigns/${campaignId}`,
「しばらくしてからもう一度お試しください」と記載されていますが、しばらくしてから実行しても同様のエラーが発生しました。
このエラーを回避するために必要な対応はcustomerIdから『-』を削除することです。replace関数を用いて『-』を削除する記述は下記の通りです。
var customerId = AdsApp.currentAccount().getCustomerId();
var customerId = customerId.replace(/-/g, '');
replace関数は通常、置換対象の文字列で最初にヒットした文字を置換します。複数文字を置換する場合は置換したい文字列を『/』と『 /g』で囲む必要があります。
キャンペーンIDは実際のIDに書き換える
『12345』はサンプルの文字列です。このままでは当然エラーが発生しますので、実際に広告グループを入稿したいキャンペーンのキャンペーンIDに書き換えてください。
const campaignId = 12345;
cpcBidMicrosは下六桁を0にする
修正前のサンプルコードは通貨がドルであることを前提に記述されています。ドルであれば『1.23』のように小数点付の入札単価を設定できるようですが、日本円ではそうともいきません。
cpcBidMicros: '1230000' // $1.23 in micros
microsは10-6ですので、『1230000』と記述した場合の日本円は『1.23円』となります。日本円で小数点以下の入札単価を設定することはできませんので、下六桁は000000にしなければエラーが発生するわけです。
さいごに
さいごに、MutateOperationを利用していくにあたって今後参考になりそうなページを紹介します。
作成・更新・削除や複数要素の追加について説明されています。
広告グループの階層の要素が分かります。個人的にはこの階層構造が好きです。
Google 広告スクリプトのフォーラムです。自分と同じ課題を持っている方が質問しているかもしれません。