AdWords Scriptsでキーワードを作るときはbuild()の結果をisSuccessful()で確認する
公開日: 執筆:佐藤
AdWords Scriptsでキーワードを作るときは、build()の返り値を変数へ保存し、isSuccessful()で結果を確認します。成功したときだけgetResult()からキーワードを受け取り、失敗したときはgetErrors()を記録してください。
Builderへ値を渡したことと、AdWordsアカウントへキーワードを作成できたことは別です。コードが最後まで動いたように見えても、作成処理の結果を読まなければ、どのキーワードが失敗したか分かりません。
Builderは設定を組み立てOperationは結果を持つ
GoogleのAdWords Scripts Buildersに関する発表は、BuilderをAdWords Scriptsでentityを作る標準の方法として案内しています。キーワードでは、広告グループからnewKeywordBuilder()を呼び、必要な値を設定してbuild()を実行します。
各methodの役割は次のように分かれます。
| method | 役割 |
|---|---|
newKeywordBuilder() |
広告グループに属する新しいキーワードの設定を始める |
withText() |
キーワードの文字列を渡す |
withCpc() |
上限クリック単価を渡す |
withDestinationUrl() |
クリック後の移動先URLを渡す |
build() |
作成処理を組み立て、Operationを返す |
isSuccessful() |
作成処理が成功したかを返す |
getResult() |
成功時に作成されたキーワードを返す |
getErrors() |
失敗時のerrorを返す |
入力値を設定するmethodと、結果を読むmethodを一つの長い処理として扱わないことが大切です。build()までを作成依頼、isSuccessful()以後を結果確認として分けると、失敗時の分岐を省かずに済みます。
build()が返すOperationを捨てない
次は説明用の仮例です。引数のadGroupは、対象を確認済みの一つの広告グループを表します。この関数を実行するとAdWordsアカウントへ変更を加えるため、実在アカウントへそのまま貼り付けないでください。
function createKeyword(adGroup, keywordText, maxCpc, destinationUrl) {
var operation = adGroup.newKeywordBuilder()
.withText(keywordText)
.withCpc(maxCpc)
.withDestinationUrl(destinationUrl)
.build();
if (operation.isSuccessful()) {
return operation.getResult();
}
Logger.log(operation.getErrors());
return null;
}
operationを保存せず、最後を.build();だけで終えると、その場で成功と失敗を分けられません。複数のキーワードを作る処理では、入力した文字列とOperationを対応させ、どの入力にどのerrorが返ったかを残します。
isSuccessful()を呼ぶと、処理が完了するまで待って結果を返します。成功した場合はgetResult()を使えます。失敗した場合にgetResult()だけを呼ぶのではなく、getErrors()を記録し、入力値または設定条件を直します。
errorを握りつぶして件数だけ数えない
十件の入力から八件を作成できた場合、成功件数だけでは、残り二件を再実行すべきか判断できません。次の項目を一行へ対応させて残します。
- 広告グループ
- 入力したキーワード
- 上限クリック単価
- 移動先URL
- 成功または失敗
getErrors()の内容
この記録があれば、入力値を直して再実行する対象と、広告方針を見直す対象を分けられます。errorが出たキーワードを条件なしで繰り返し送る処理は、失敗原因を隠したまま実行回数だけを増やします。
作成成功も、広告成果の成功とは別です。Operationが成功したという結果は、指定したキーワードを作成できたことを示します。検索した人の意図に合うか、広告文と移動先が一致するか、費用に見合うかは、別に確認します。
createKeyword()からBuilderへ移す
Buildersの発表では、AdGroup.createKeyword()の作成methodを非推奨としています。ただし、すぐに動かなくなるとはしておらず、しばらくは動作すると説明しています。
既存scriptを一度にすべて書き換える必要はありません。最初に、新しく追加するキーワード作成処理をBuilderへそろえます。その後、既存のcreateKeyword()を検索し、次の順に移します。
- 対象広告グループの選択条件を保存する
- 旧methodへ渡している値を確認する
- 同じ値をBuilderへ渡す
- Operationの成功と失敗を記録する
- 一件で確認してから処理件数を増やす
書き換え前後で対象広告グループや入力値まで変えると、作成methodの変更と広告設定の変更を同時に行うことになります。まず作成方法だけを移し、キーワードの選び方は別の作業として扱ってください。
自動化する前に一件の責任を決める
コードを制作会社へ依頼する場合は、script fileだけでなく、対象広告グループの選択条件、入力データ、実行者、errorの記録先を受け取ります。コードを書く仕事を委託しても、どのキーワードをいくらで、どのページへ向けて作るかという判断は広告主に残ります。
一件で動いたことを理由に、すぐ全広告グループへ広げないでください。広告グループを一つ、キーワードを一つに限定し、Previewと実行後の管理画面を確認します。次に、失敗したときのgetErrors()が記録されることを確認してから、件数を増やします。
最初の一手は、既存scriptから.build()を検索し、その返り値を保存しているかを見ることです。返り値を捨てている処理があれば、Operationを変数へ入れ、成功時と失敗時の分岐を一つずつ追加してください。
関連記事

