Это руководство представляет собой точный аналог существующих руководств по максимальной эффективности, которые предполагают, что вы будете создавать всю кампанию в одном атомарном запросе, а не создавать каждый объект по одному в отдельных запросах. Это означает, что вам нужно будет использовать временные идентификаторы для связывания ресурсов друг с другом, поскольку вы не будете знать полные имена ресурсов, пока не получите ответ API.
Для этого вам придется написать некоторый код, чтобы гарантировать, что вы не создадите повторяющиеся временные идентификаторы:
let nextId = -1;
function getNextTempId() {
const ret = nextId;
nextId -= 1;
return ret;
}
Каждый последующий вызов getNextTempId
будет возвращать число на единицу меньше предыдущего. Поскольку все временные идентификаторы должны быть отрицательными, начните с -1.
Теперь вы можете создать массив для хранения всех операций:
const operations = [];
Вам часто понадобится идентификатор клиента, для которого вы проводите кампанию, поскольку он требуется в каждом имени ресурса.
const customerId = AdsApp.currentAccount().getCustomerId();
Каждый раз, когда вы хотите создать новую операцию, вы будете использовать следующий временный идентификатор в имени ресурса, чтобы позже можно было сослаться на этот объект и вставить созданный объект в массив:
const newOperation = {
[OPERATION_TYPE_VARIES]: {
create: {
resourceName: `customers/${customerId}/[EXACT_PATH_VARIES]/${getNextTempId()}`
// Other fields, relevant to the resource being created.
}
}
}
operations.push(newOperation);
Дополнительную информацию и пример операции можно прочитать в документации по изменению REST API Google Рекламы .
После того, как вы создали все наши операции, выполните их в одном пакете:
AdsApp.mutateAll(operations);