スクリプトでのエラーと警告の処理

スクリプトからエラーが返されるのは、無効な値を持つエンティティを追加する場合だけです。 たとえば、入札金額が無効なキーワード エンティティを追加しようとすると、ビルド操作は失敗し、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!');
}

変更ログとテキスト ログに記録されたすべてのメッセージを常に確認する必要があります。