Это руководство будет представлено для создания точного аналога существующих руководств по Performance Max, которые предполагают, что вы будете создавать всю кампанию одним атомарным запросом, а не каждую сущность по отдельности в отдельных запросах. Это означает, что вам потребуется использовать временные идентификаторы для связи ресурсов друг с другом, поскольку вы не будете знать полные имена ресурсов, пока не получите ответ 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);
Дополнительную информацию и пример операции можно найти в документации по mutate REST API Google Ads .
После того как вы построили все наши операции, выполните их в одном пакете:
AdsApp.mutateAll(operations);