Стратегия мутации

Это руководство будет представлено для создания точного аналога существующих руководств по 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);