Node.js

Google предоставляет клиентскую библиотеку Node.js для взаимодействия с API Менеджера рекламы.

Предпосылки

Для использования клиентской библиотеки Node.js необходимо установить Node.js. Подробнее см. в разделе «Загрузка Node.js®» .

Установить клиентскую библиотеку

Для начала создайте новый проект в выбранной вами IDE или добавьте зависимость к существующему проекту. Google публикует артефакты клиентской библиотеки в npm как @google-ads/admanager .

пакет.json

"dependencies": {
  "@google-ads/admanager": "^0.4.0"
}

Командная строка

npm install @google-ads/admanager

Настроить учетные данные

Для аутентификации клиентская библиотека Node.js использует OAuth2 и учётные данные приложения по умолчанию (ADC). Инструкции по созданию и настройке учётных данных ADC см. в разделе «Аутентификация» .

Сделайте свой первый запрос

У каждой службы есть объект ServiceClient с методами для каждого REST-метода. Примеры каждого метода см. в репозитории GitHub googleapis/google-cloud-node . Следующий пример считывает объект Network :

// Resource name of the Network
const name = 'networks/NETWORK_CODE'

// Imports the Admanager library
const {NetworkServiceClient} = require('@google-ads/admanager').v1;

// Instantiates a client
const admanagerClient = new NetworkServiceClient();

async function callGetNetwork() {
  // Construct request
  const request = {
    name,
  };

  // Run request
  const response = await admanagerClient.getNetwork(request);
  console.log(response);
}

callGetNetwork();

Регистрируйте HTTP-запросы и ответы

Клиентская библиотека Node.js поддерживает логирование HTTP-запросов и ответов. По умолчанию клиентская библиотека отключает логирование.

Чтобы включить ведение журнала по умолчанию в стандартный вывод, задайте переменной окружения GOOGLE_SDK_NODE_LOGGING список имён пакетов API Google, разделённых запятыми. Вы можете включить ведение журнала для всех API Google, задав переменной значение all . Все доступные имена пакетов клиентских библиотек см. в разделе «Клиентские библиотеки Google Cloud Node.js».

Node.js

// Enable logging for the Google Ad Manager API
process.env.GOOGLE_SDK_NODE_LOGGING = 'admanager';

// Enable logging for the Google Ad Manager and pubsub APIs.
process.env.GOOGLE_SDK_NODE_LOGGING = 'admanager,pubsub';

// Enable logging for all Google APIs
process.env.GOOGLE_SDK_NODE_LOGGING = 'all';

Linux или macOS

# Enable logging for the Google Ad Manager API.
export GOOGLE_SDK_NODE_LOGGING=admanager

# Enable logging for the Google Ad Manager and pubsub APIs.
export GOOGLE_SDK_NODE_LOGGING=admanager,pubsub

# Enable logging for all Google APIs
export GOOGLE_SDK_NODE_LOGGING=all

Окна

# Enable logging for the Google Ad Manager API.
set GOOGLE_SDK_NODE_LOGGING=admanager

# Enable logging for the Google Ad Manager and pubsub APIs.
set GOOGLE_SDK_NODE_LOGGING=admanager,pubsub

# Enable logging for all Google APIs
set GOOGLE_SDK_NODE_LOGGING=all

Кроме того, вы можете изменить серверную часть логирования или события журнала перехватов. Подробнее см. в разделе «Инструменты логирования Google» .

Обработка ошибок

В клиентской библиотеке Node.js все ошибки API Менеджера рекламы вызывают исключение типа GaxiosError .

Ошибки API Менеджера рекламы включают сообщение об ошибке и уникальное значение requestId которое вы можете предоставить службе поддержки API. За помощью в устранении неполадок обращайтесь в службу поддержки API . В следующем примере извлекаются значение requestId и сообщение об ошибке:

const admanagerClient = new NetworkServiceClient();
try {
  const network = admanagerClient.getNetwork(
    { name: 'networks/NETWORK_CODE' }
  );
  console.log(network);
} catch(e) {
  if (e instanceof GaxiosError) {
    // Load the error
    const apiError = JSON.parse(e.message).error;
    const requestInfoType = 'type.googleapis.com/google.rpc.RequestInfo';
    const requestInfo = apiError.details.find(detail => detail['@type'] === requestInfoType);
    console.error(apiError.status + ' - ' + apiError.message);
    console.error('RequestId: ' + requestInfo.requestId);
  } else {
    throw e;
  }
}