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

Большинство объектов 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. Чтобы сослаться на ресурс, созданный в предыдущем запросе mutate, используйте его фактическое название.