• AdWords Scriptsでキーワードを作るときはbuild()の結果をisSuccessful()で確認する

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()を検索し、次の順に移します。

  1. 対象広告グループの選択条件を保存する
  2. 旧methodへ渡している値を確認する
  3. 同じ値をBuilderへ渡す
  4. Operationの成功と失敗を記録する
  5. 一件で確認してから処理件数を増やす

書き換え前後で対象広告グループや入力値まで変えると、作成methodの変更と広告設定の変更を同時に行うことになります。まず作成方法だけを移し、キーワードの選び方は別の作業として扱ってください。

自動化する前に一件の責任を決める

コードを制作会社へ依頼する場合は、script fileだけでなく、対象広告グループの選択条件、入力データ、実行者、errorの記録先を受け取ります。コードを書く仕事を委託しても、どのキーワードをいくらで、どのページへ向けて作るかという判断は広告主に残ります。

一件で動いたことを理由に、すぐ全広告グループへ広げないでください。広告グループを一つ、キーワードを一つに限定し、Previewと実行後の管理画面を確認します。次に、失敗したときのgetErrors()が記録されることを確認してから、件数を増やします。

最初の一手は、既存scriptから.build()を検索し、その返り値を保存しているかを見ることです。返り値を捨てている処理があれば、Operationを変数へ入れ、成功時と失敗時の分岐を一つずつ追加してください。

戻る