6.2.0 • Published 2 days ago

@johngw/google-ad-manager-api v6.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 days ago

@johngw/google-ad-manager-api

A fully typed library to access Google's Ad Manager.

Installation

npm install @johngw/google-ad-manager-api

Usage

Simple queries

import {
  GoogleAdManager,
  In,
  Not,
  Like,
  query,
} from '@johngw/google-ad-manager-api'

const api = new GoogleAdManager({
  applicationName: 'MY_APPLICATION_NAME',
  networkCode: 123456789,
  jwtOptions: {
    key: 'MY_JWT_KEY',
    email: 'MY_JWT_EMAIL',
    scopes: ['https://www.googleapis.com/auth/dfp'],
  },
})

const client = await api.createLineItemServiceClient()

const [response] = await query(client, 'getLineItemsByStatementAsync', {
  limit: 10,
  where: {
    orderId: In(1, 2, 3),
    id: Not(11222),
    name: Like('foo %'),
    orderName: 'Foo',
  },
})

expect(response.rval?.results).toHaveLength(10)

The following will produce the same result albeit more verbose:

import {
  LineItemService,
  In,
  Not,
  Like,
  pql,
} from '@johngw/google-ad-manager-api'

const [response] = await client.getLineItemsByStatementAsync({
  filterStatement: {
    query: pql<LineItemService.LineItems>({
      limit: 10,
      where: {
        orderId: In(1, 2, 3),
        id: Not(11222),
        name: Like('foo %'),
        orderName: 'Foo',
      },
    }),
  },
})

You can also type the pql function with JSDocs:

/**
 * @typedef {import('@johngw/google-ad-manager-api').PQL<
 *   import('@johngw/google-ad-manager-api').LineItemService.LineItems
 * >} LineItemsPQL
 */

const [response] = await client.getLineItemsByStatementAsync({
  filterStatement: {
    query: /** @type {LineItemsPQL} */ (pql)({
      limit: 10,
      where: {
        orderId: In(1, 2, 3),
        id: Not(11222),
        name: Like('foo %'),
        orderName: 'Foo',
      },
    }),
  },
})

Paginated queries

When quering large amounts of data, you'd generally want to use GAM's pagination feature. Use the iterate function to help iterate through all individual items in paginated queries.

import { GoogleAdManager, iterate, query } from '@johngw/google-ad-manager-api'

const api = new GoogleAdManager({
  applicationName: 'MY_APPLICATION_NAME',
  networkCode: 123456789,
  jwtOptions: {
    key: 'MY_JWT_KEY',
    email: 'MY_JWT_EMAIL',
    scopes: ['https://www.googleapis.com/auth/dfp'],
  },
})

const client = await api.createLineItemServiceClient()

for await (const result of iterate({
  executeQuery: (limit, offset) =>
    query(client, 'getLineItemsByStatementAsync', {
      limit,
      offset,
    }),
})) {
  console.info(result)
}
6.1.0

2 days ago

6.2.0

2 days ago

6.0.4

10 days ago

6.0.3

17 days ago

6.0.1

19 days ago

6.0.2

19 days ago

6.0.0

24 days ago

5.0.2

2 months ago

5.0.1

2 months ago

5.0.0

3 months ago

4.1.0

3 months ago

4.1.2

3 months ago

4.1.1

3 months ago

4.0.5

3 months ago

4.0.4

3 months ago

4.0.3

3 months ago

4.0.2

3 months ago

4.0.1

3 months ago

4.0.0

3 months ago

3.7.3

5 months ago

3.7.2

5 months ago

3.7.1

5 months ago

3.7.0

6 months ago

3.6.1

6 months ago

3.6.0

6 months ago

3.5.2

6 months ago

3.5.1

6 months ago

3.5.0

7 months ago

3.4.0

7 months ago

3.3.2

7 months ago

3.3.1

7 months ago