スクリプトでのエラーと警告の処理
スクリプトからエラーが返されるのは、無効な値を持つエンティティを追加する場合だけです。 たとえば、入札金額が無効なキーワード エンティティを追加しようとすると、ビルド操作は失敗し、1 つ以上のエラーが返されます。
var operation = adGroup.newKeywordBuilder()
.withText(keywordText)
.withCpc(-5)
.build();
if (operation.isSuccessful()) {
var keyword = operation.getResult();
Logger.log(`Added keyword, ${keyword.getText()}.`);
}
else {
// The bid amount is not valid, so this path executes
for (var error of operation.getErrors()) {
Logger.log(error);
}
}
ただし、エンティティのプロパティを無効な値で更新しようとすると、スクリプトはエラーを返しません。 代わりに、スクリプトは 変更ログ にエラー メッセージを書き込み、コードの実行を続行します。 たとえば、次のコードは広告グループのクリック単価の設定を試みます。 量が無効であるため、呼び出しはサイレントモードで失敗し、スクリプトの実行が続行され、エラー メッセージが変更ログに書き込まれます。
function main() {
var adGroup = AdsApp.adGroups().get().next();
adGroup.bidding().setCpc(-5);
}
注:
更新が成功したことを確認するために、値を設定した後でメソッドを呼び出したくなるかもしれませんが、呼び出 getCpc
さないでください。 set メソッドを呼び出した後に get メソッドを呼び出すと、バッチ更新機能が不要になり、パフォーマンスが低下します。 詳細については、「ベスト プラクティスでの更新プログラムのバッチ処理」を参照してください。
ランタイム エラーやエンティティ取得エラーなどのその他のエラーにより、スクリプトの実行が停止します。 この場合、エラー メッセージが テキスト ログに書き込まれます。 次のコードは関数の呼び出しを foo()
試みますが、関数が定義されていないため、スクリプトは実行を終了します。
function main() {
foo(); // The script stops because foo() is undefined and generates a reference error
Logger.log('This line is never logged!');
}
変更ログとテキスト ログに記録されたすべてのメッセージを常に確認する必要があります。