Partilhar via


Lidar com erros e avisos no script

A única vez que os Scripts devolvem erros é quando adiciona uma entidade com valores inválidos. Por exemplo, se tentar adicionar uma entidade de palavra-chave com um valor de licitação inválido, a operação de compilação falha e devolve um ou mais erros.

        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);
            }
        }

No entanto, se tentar atualizar as propriedades de uma entidade com um valor inválido, os Scripts não devolverão um erro. Em vez disso, os Scripts escrevem uma mensagem de erro no Registo de Alterações e o código continua a ser executado. Por exemplo, o código seguinte tenta definir a oferta CPC do grupo de anúncios. Uma vez que o montante não é válido, a chamada falha silenciosamente, o script continua a ser executado e é escrita uma mensagem de erro no registo de alterações.

function main() {
    var adGroup = AdsApp.adGroups().get().next();
    adGroup.bidding().setCpc(-5);
}

Nota

Embora possa sentir-se tentado a chamar getCpc o método depois de definir o respetivo valor para verificar se a atualização foi efetuada com êxito, não o faça. Chamar o método get depois de chamar o método set degrada o desempenho ao eliminar a funcionalidade de atualização de lotes. Para obter mais informações, veja Atualizações do Batching em Melhores práticas.

Outros erros, como erros de runtime ou falhas de obtenção de entidades, fazem com que a execução do script pare. Quando isto acontece, a mensagem de erro é escrita no Registo de Texto. O código seguinte tenta chamar a foo() função, mas como a função não está definida, o script termina a execução.

function main() {
    foo(); // The script stops because foo() is undefined and generates a reference error
    Logger.log('This line is never logged!');
}

Deve sempre rever todas as mensagens registadas no registo de alterações e no registo de texto.