У большинства объектов 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, используйте его фактическое название.