https://github.com/mrdulin/nodejs-google-adwords
Google Ads API Client Library for Node.js (SOAP + WSDL)
https://github.com/mrdulin/nodejs-google-adwords
google google-ads google-ads-api google-adwords node-soap nodejs nodejs-google-adwords soap soap-web-services soap-wsdl typescript wsdl
Last synced: 5 months ago
JSON representation
Google Ads API Client Library for Node.js (SOAP + WSDL)
- Host: GitHub
- URL: https://github.com/mrdulin/nodejs-google-adwords
- Owner: mrdulin
- License: mit
- Created: 2018-07-17T02:07:47.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-06-01T05:55:46.000Z (over 2 years ago)
- Last Synced: 2024-10-05T14:07:30.165Z (about 1 year ago)
- Topics: google, google-ads, google-ads-api, google-adwords, node-soap, nodejs, nodejs-google-adwords, soap, soap-web-services, soap-wsdl, typescript, wsdl
- Language: TypeScript
- Homepage:
- Size: 2.98 MB
- Stars: 15
- Watchers: 5
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# nodejs google adwords
[![NPM Downloads][downloads-image]][downloads-url]
![LICENSE][license-image]
[](https://travis-ci.org/mrdulin/nodejs-google-adwords)
[](https://coveralls.io/github/mrdulin/nodejs-google-adwords?branch=master)
[](https://stackshare.io/mrdulin/nodejs-google-adwords)Google Ads API Client Library for Node.js. This library is developed for Google Adwords SOAP + WSDL API (v201809).
## OAuth
Replace your GCP OAuth 2.0 client ID and open this link in browser,
```bash
https://accounts.google.com/o/oauth2/auth?client_id={Your Client ID}&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fadwords&redirect_uri=urn:ietf:wg:oauth:2.0:oob&access_type=offline&approval_prompt=auto
```The OAuth2.0 Client type should be `other`, not web application

If you use client id which client type is `web application`, you will get below error:

After finish the oauth workflow, you will get authorization code, for example: `4/0wA_JBMyfVH1ZEqZlAr0sOn_XmdzUrBgCjrpi9fVs9TudrjZUDzuUmU`
Using authorization code exchange credentials:
```bash
curl \
-d code=4/MgGqR_qEUkzq95LlP_Am8clUbX8t733PvtoMuZ_xsmAA8NHdjK07xXo \
-d client_id= \
-d client_secret= \
-d redirect_uri=urn:ietf:wg:oauth:2.0:oob \
-d grant_type=authorization_code https://accounts.google.com/o/oauth2/token
```Credentials response:
```bash
{
"access_token": "",
"expires_in": 3600,
"refresh_token": "",
"scope": "https://www.googleapis.com/auth/adwords",
"token_type": "Bearer"
}
```You can revoke your access token from: https://myaccount.google.com/u/0/permissions
Above workflow is only for server-side local development without a front-end(client-side), after you make a front-end application, then you can create a OAuth2.0 Client on GCP with `web application` type and set up your `Authorized JavaScript origins` and `Authorized redirect URIs` like below:

Then, when user perform the oauth workflow, you can confirm the oauth workflow on server-side, and store the `refresh_token`, `access_token` and other informations in your database. When user click `create campaign` button on your front-end application, it will send a HTTP request to your server-side, then, you can get the user's `access_token` from database, can call google adwords api using this `access_token`.
## Environment variables
```txt
ADWORDS_CLIENT_ID=
ADWORDS_SECRET=
ADWORDS_DEVELOPER_TOKEN=
ADWORDS_CLIENT_CUSTOMER_ID=153-935-9847
ADWORDS_USER_AGENT=Google Ads API Client Library for Node.js
ADWORDS_REFRESH_TOKEN=
```Put above environment variables into `.env` file for local development.
## Usage
Initialize `AdwordsService` with above environment variables
```ts
const adwordsService = new AdWordsService({
clientCustomerId: credentials.ADWORDS_CLIENT_CUSTOMER_ID,
developerToken: credentials.ADWORDS_DEVELOPER_TOKEN,
userAgent: credentials.ADWORDS_USER_AGENT,
clientId: credentials.ADWORDS_CLIENT_ID,
clientSecret: credentials.ADWORDS_SECRET,
credentials: {
refresh_token: credentials.ADWORDS_REFRESH_TOKEN,
},
});
```Get budgets by page:
```ts
async function getByPage() {
const budgetService = adwordsService.getService('BudgetService');
const paging: IPaging = {
startIndex: 0,
numberResults: 2,
};
return await budgetService.getByPage(paging);
}
```Create a budget:
```ts
async function createBudget() {
const budgetService = adwordsService.getService('BudgetService');const budget: IBudget = {
name: faker.lorem.word(),
amount: {
microAmount: BudgetService.UNIT,
},
deliveryMethod: Budget.BudgetDeliveryMethod.STANDARD,
isExplicitlyShared: false,
status: Budget.BudgetStatus.ENABLED,
};return await budgetService.add(budget);
}
```Get campaigns by page:
```ts
async function getCampaignsByPages() {
const paging: IPaging = {
startIndex: 0,
numberResults: 1,
};
return await campaignService.getByPage(paging);
}
```Same usage for other Google Adwords resources
## TODO
- [ ]
- [ ]
- [ ] Add model layer and object schema validation## References
-
-
-
-
-
-
-
-
-[downloads-image]: https://img.shields.io/npm/dt/nodejs-google-adwords.svg
[downloads-url]: https://npmjs.org/package/nodejs-google-adwords
[license-image]: https://img.shields.io/npm/l/nodejs-google-adwords.svg