Che cosa sono i costruttori?
I generatori vengono usati per aggiungere un'entità. Ogni oggetto padre, ad esempio Campaign, include metodi per ottenere gli oggetti generatore usati per aggiungere entità figlio. Ad esempio, per aggiungere un gruppo di annunci a una campagna, chiamerai il Campaign
metodo dell'oggetto newAdGroupBuilder
.
L'oggetto builder include metodi usati per impostare i valori delle proprietà dell'entità. Ad esempio, per specificare il CPC di una parola chiave, si userà il withCpc
metodo . Dopo aver impostato tutti i valori delle proprietà dell'entità, è necessario chiamare il build
metodo per creare l'entità. Il processo di compilazione è un processo asincrono in cui la richiesta viene accodata con altre richieste di compilazione ed elaborata in un batch. Le richieste in batch verranno completate prima che lo script venga terminato.
Per determinare se le richieste di compilazione hanno avuto esito positivo, è possibile esaminare i log o usare l'oggetto operazione restituito dal build
metodo. Ad esempio, AdGroupBuilder restituisce AdGroupOperation. È possibile chiamare uno dei metodi dell'oggetto operazione (isSuccessful
, getResult
o getErrors
) per determinare se script hanno creato correttamente l'entità. Esistono tuttavia considerazioni sulle prestazioni quando si chiamano questi metodi (vedere Considerazioni sulle prestazioni).
Nell'esempio seguente viene illustrato concettualmente come creare una parola chiave usando il generatore e gli oggetti operazione. Probabilmente è consigliabile usare questo flusso solo se si sta creando una singola entità (o forse alcuni).
// 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`);
}
}
Considerazioni sulle prestazioni
Per migliorare le prestazioni, script elabora le richieste di compilazione in batch. Se si chiama il metodo di operazione di una richiesta di compilazione, gli script devono elaborare immediatamente le richieste di compilazione in coda, negando eventuali miglioramenti delle prestazioni. Se si creano più entità, non eseguire i metodi di operazione nello stesso ciclo usato per compilare l'entità. Ciò comporta prestazioni scarse perché viene elaborata una sola entità alla volta. Creare invece una matrice delle operazioni ed elaborarle dopo il ciclo di compilazione.
Eseguire l'operazione seguente
// 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();
}
Non eseguire questa operazione
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();
}
Di seguito è riportato l'elenco dei generatori.