spotonlive/laravel-google-ads

View on GitHub
README.md

Summary

Maintainability
Test Coverage
<p align="center">
<img src="https://cloud.githubusercontent.com/assets/3541622/17292148/47c841ea-57e8-11e6-80c3-773dfd28a1f4.png" alt="">
</p>

[![Laravel 5.1+](https://img.shields.io/badge/Laravel-5.3+-orange.svg?style=flat-square)](http://laravel.com) [![Lumen 5.1+](https://img.shields.io/badge/Lumen-5.3+-orange.svg?style=flat-square)](http://lumen.laravel.com)  [![Total Downloads](https://poser.pugx.org/spotonlive/laravel-google-ads/downloads)](https://packagist.org/packages/spotonlive/laravel-google-ads) [![License](https://poser.pugx.org/spotonlive/laravel-google-ads/license)](https://packagist.org/packages/spotonlive/laravel-google-ads) [![Build Status](https://travis-ci.org/spotonlive/laravel-google-ads.svg?branch=master)](https://travis-ci.org/spotonlive/laravel-google-ads) [![Code Climate](https://codeclimate.com/github/spotonlive/laravel-google-ads/badges/gpa.svg)](https://codeclimate.com/github/spotonlive/laravel-google-ads) [![Test Coverage](https://codeclimate.com/github/spotonlive/laravel-google-ads/badges/coverage.svg)](https://codeclimate.com/github/spotonlive/laravel-google-ads/coverage)

## Google Ads API for Laravel

Integration of [`googleads/googleads-php-lib`](https://github.com/googleads/googleads-php-lib) in Laravel and Lumen (version >5).

### Setup
- Run `$ composer require spotonlive/laravel-google-ads`

#### Laravel

- **(Only for Laravel 5.4 or minor)** Add provider to config/app.php

```php
'providers' => [
    LaravelGoogleAds\LaravelGoogleAdsProvider::class,
],
```

- Run `$ php artisan vendor:publish` to publish the configuration file `config/google-ads.php` and insert:
    - developerToken
    - clientId & clientSecret
    - refreshToken

#### Lumen

- Add provider to `bootstrap/app.php`

```php
$app->register(LaravelGoogleAds\LaravelGoogleAdsProvider::class);
```

- Copy `vendor/spotonlive/laravel-google-ads/config/config.php` to `config/google-ads.php` and insert:
    - developerToken
    - clientId & clientSecret
    - refreshToken

- Add config to `bootstrap/app.php`

```php
$app->configure('google-ads');
```

### Generate refresh token
*This requires that the `clientId` and `clientSecret` is from a native application.*

Run `$ php artisan googleads:token:generate` and open the authorization url. Grant access to the app, and input the
access token in the console. Copy the refresh token into your configuration `config/google-ads.php`

### Basic usage

The following example is for AdWords, but the general code applies to all
products.


```php
<?php

namespace App\Services;

use LaravelGoogleAds\Services\AdWordsService;
use Google\AdsApi\AdWords\AdWordsServices;
use Google\AdsApi\AdWords\AdWordsSessionBuilder;
use Google\AdsApi\AdWords\v201806\cm\CampaignService;
use Google\AdsApi\AdWords\v201806\cm\OrderBy;
use Google\AdsApi\AdWords\v201806\cm\Paging;
use Google\AdsApi\AdWords\v201806\cm\Selector;

class Service
{
    /** @var AdWordsService */
    protected $adWordsService;
    
    /**
     * @param AdWordsService $adWordsService
     */
    public function __construct(AdWordsService $adWordsService)
    {
        $this->adWordsService = $adWordsService;
    }

    public function campaigns()
    {
        $customerClientId = 'xxx-xxx-xx';

        $campaignService = $this->adWordsService->getService(CampaignService::class, $customerClientId);

        // Create selector.
        $selector = new Selector();
        $selector->setFields(array('Id', 'Name'));
        $selector->setOrdering(array(new OrderBy('Name', 'ASCENDING')));

        // Create paging controls.
        $selector->setPaging(new Paging(0, 100));

        // Make the get request.
        $page = $campaignService->get($selector);
    }
}
```

### Best practices
- [AdWords API Workshops Fall 2015](https://www.youtube.com/playlist?list=PLKByxjzUC-N8mEDQF9ARMMkSv0AmYbpsh)
- [Best Practices in Reporting](https://www.youtube.com/watch?v=nRh-sIUqY84&index=2&list=PLKByxjzUC-N8mEDQF9ARMMkSv0AmYbpsh)

### Features, requirements, support etc.
See [`googleads/googleads-php-lib`](https://github.com/googleads/googleads-php-lib/blob/master/README.md)

### Dependencies
- [`googleads/googleads-php-lib`](https://github.com/googleads/googleads-php-lib) hosts the PHP client library for the various SOAP-based Ads APIs (AdWords, AdExchange Buyer, and DFP) at Google.

### Credits
- [`SpotOn Marketing`](https://spotonmarketing.dk/)
- [`nikolajlovenhardt`](https://github.com/nikolajlovenhardt)