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

Это руководство представляет собой точный аналог существующих руководств по максимальной эффективности, которые предполагают, что вы будете создавать всю кампанию в одном атомарном запросе, а не создавать каждый объект по одному в отдельных запросах. Это означает, что вам нужно будет использовать временные идентификаторы для связывания ресурсов друг с другом, поскольку вы не будете знать полные имена ресурсов, пока не получите ответ 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);