O que são construtores?
Utilize construtores para adicionar uma entidade. Cada objeto principal, como Campanha, inclui métodos para obter objetos de construtor que utiliza para adicionar entidades subordinadas. Por exemplo, para adicionar um grupo de anúncios a uma campanha, chamaria o Campaign
método do newAdGroupBuilder
objeto.
O objeto de construtor inclui métodos que utiliza para definir os valores de propriedade da entidade. Por exemplo, para especificar o CPC de uma palavra-chave, utilizaria o withCpc
método . Depois de definir todos os valores de propriedade da entidade, chamaria o build
método para criar a entidade. O processo de compilação é um processo assíncrono em que o pedido é colocado em fila com outros pedidos de compilação e processado num lote. Os pedidos em lote serão concluídos antes de o script terminar.
Para determinar se os pedidos de compilação foram bem-sucedidos, pode ver os registos ou utilizar o objeto de operação que o build
método devolve. Por exemplo, AdGroupBuilder devolve AdGroupOperation. Pode chamar qualquer um dos métodos do objeto de operação (isSuccessful
, , getResult
ou getErrors
) para determinar se os Scripts criaram a entidade com êxito. No entanto, existem considerações de desempenho ao chamar estes métodos (veja Considerações de desempenho).
O exemplo seguinte mostra conceptualmente como criar uma palavra-chave com o construtor e os objetos de operação. Provavelmente, deve utilizar este fluxo apenas se estiver a criar uma única entidade (ou talvez algumas).
// Gets the first ad group in the account.
var adGroup = AdsApp.adGroups().get().next();
// Use the 'with' methods to specify the keyword's property values.
// The .build() method adds the build request to the build queue.
var keywordOperation = adGroup.newKeywordBuilder()
.withCpc(1.2)
.withText("shirts")
.withFinalUrl("https://www.contoso.com/shirts")
.build();
// Call isSuccessful() to determine if the build succeeded.
// Calling any of the operation object's method processes the
// build request immediately.
if (keywordOperation.isSuccessful()) {
// You only need to call getResult if you need to access
// the new keyword entity.
var keyword = keywordOperation.getResult();
} else {
// Handle the errors.
for (var error of keywordOperation.getErrors()) {
Logger.log(`${error}\n`);
}
}
Considerações de desempenho
Para melhorar o desempenho, os Scripts processam pedidos de compilação em lotes. Se chamar o método de operação de um pedido de compilação, força os Scripts a processar imediatamente os pedidos de compilação em fila, negando quaisquer ganhos de desempenho. Se estiver a criar mais do que uma entidade, não execute os métodos de operação no mesmo ciclo que utiliza para criar a entidade. Isto leva a um fraco desempenho porque apenas uma entidade de cada vez é processada. Em vez disso, crie uma matriz das operações e processe-as após o ciclo de compilação.
Efetue este procedimento
// An array to hold the operations, so you
// can process them after all the entities are queued.
var operations = [];
// Create all the new entities.
for (var i = 0; i < keywords.length; i++) {
var keywordOperation = AdsApp.adGroups().get().next()
.newKeywordBuilder()
.withText(keywords[i])
.build();
operations.push(keywordOperation);
}
// Now call the operation method so the build requests
// get processed in batches.
for (var i = 0; i < operations.length; i++) {
var newKeyword = operations[i].getResult();
}
Não faça isto
for (var i = 0; i < keywords.length; i++) {
var keywordOperation = AdsApp.adGroups().get().next()
.newKeywordBuilder()
.withText(keywords[i])
.build();
// Don't get results in the same loop that creates
// the entity because Scripts then only processes one
// entity at a time.
var newKeyword = keywordOperation.getResult();
}
Segue-se a lista de construtores.