Идентификаторы

У большинства объектов Google Рекламы есть метод getId(), который возвращает их идентификатор. В большинстве случаев идентификаторы не нужны, но они могут пригодиться, если:

Работа с отчетами
Идентификаторы позволяют связать строку отчета с объектом Google Рекламы.
Как поддерживать сопоставление с внешним хранилищем данных
В вашей базе данных уже может храниться информация, основанная на идентификаторах.
Необходимость повышения эффективности.

Как правило, извлечение объектов по идентификатору – это самый быстрый метод. Код для получения одного объекта тоже немного проще:

let campaigns = AdsApp.campaigns()
   .withIds([678678])
   .get();
// versus
let campaigns = AdsApp.campaigns()
   .withCondition("Name='My Campaign'")
   .get();

Уникальность

Идентификаторы кампаний и групп объявлений уникальны. У двух кампаний или групп объявлений не может быть одинакового идентификатора. Однако у объявлений и ключевых слов составные идентификаторы: уникальный идентификатор ключевого слова – это комбинация идентификатора группы объявлений и идентификатора ключевого слова. Уникальный идентификатор объявления – это сочетание идентификатора группы объявлений и идентификатора объявления. Это влияет на то, как вызывается selector.withIds().

Для кампаний и групп объявлений selector.withIds() ожидает массив чисел:

let ids = [123123, 234234, 345345];
let campaignSelector = AdsApp.campaigns().withIds(ids);

Однако для объявлений и ключевых слов методу selector.withIds() требуется массив, состоящий из двухэлементных массивов, первым элементом которых является идентификатор группы объявлений. Следующий фрагмент кода извлекает три ключевых слова из группы объявлений:

let adGroupId = 123123;
let keywordSelector = AdsApp.keywords().withIds([
    [adGroupId, 234234],
    [adGroupId, 345345],
    [adGroupId, 456456]
]);

Та же конструкция используется при получении объявлений.

Временные идентификаторы

При работе с запросом mutate, содержащим несколько операций, вам иногда потребуется использовать временные идентификаторы, чтобы связать ресурсы друг с другом, поскольку полные названия ресурсов будут доступны только после получения ответа API. Временные идентификаторы должны быть отрицательными числами, начиная с -1, и не могут повторяться в одном запросе mutate. Чтобы эффективно использовать временные идентификаторы, вам нужно будет написать код, который предотвратит создание дубликатов.

let nextId = -1;

function getNextTempId() {
    const ret = nextId;
    nextId -= 1;
    return ret;
}

Каждый последующий вызов getNextTempId будет возвращать число на единицу меньше предыдущего. Поскольку все временные идентификаторы должны быть отрицательными, начните с -1.

Временные идентификаторы не сохраняются между заданиями или запросами на изменение. Чтобы сослаться на ресурс, созданный в предыдущем запросе mutate, используйте его фактическое название.