Giter Site home page Giter Site logo

googleads-python-lib's Introduction

The googleads Python client library

This client library simplifies accessing Google's SOAP Ads APIs - AdWords, and DoubleClick for Publishers. The library provides easy ways to store your authentication and create SOAP web service clients. It also contains example code to help you get started integrating with our APIs.

The Google AdWords API will sunset on April 27, 2022. Upgrade to the Google Ads API.

Getting started

  1. Download and install the library

    setuptools is a pre-requisite for installing the googleads library

    It is recommended that you install the library and its dependencies from PyPI using pip. This can be accomplished with a single command:

    $ pip install googleads

    As an alternative, you can download the library as a tarball. To start the installation, navigate to the directory that contains your downloaded unzipped client library and run the "setup.py" script as follows:

    $ python setup.py build install

  2. Copy the googleads.yaml file to your home directory.

    This will be used to store credentials and other settings that can be loaded to initialize a client.

  3. Set up your OAuth2 credentials

    The AdWords and DoubleClick for Publishers APIs use OAuth2 as the authentication mechanism. Follow the appropriate guide below based on your use case.

    If you're accessing an API using your own credentials...

    If you're accessing an API on behalf of clients...

Where can I find samples?

You can find code examples for the latest versions of AdWords or Ad Manager on the releases page.

Alternatively, you can find AdWords or Ad Manager samples in the examples directory of this repository.

Where can I find the pydocs?

Our pydocs can be found here.

Caching authentication information

It is possible to cache your API authentication information. The library includes a sample file showing how to do this named googleads.yaml. Fill in the fields for the API and features you plan to use. The library's LoadFromStorage methods default to looking for a file with this name in your home directory, but you can pass in a path to any file with the correct yaml contents.

# Use the default location - your home directory:
adwords_client = adwords.AdWordsClient.LoadFromStorage()

# Alternatively, pass in the location of the file:
ad_manager_client = ad_manager.AdManagerClient.LoadFromStorage('C:\My\Directory\googleads.yaml')

How do I change the Client Customer Id at runtime?

You can change the Client Customer Id with the following:

adwords_client = AdWordsClient.LoadFromStorage()
adwords_client.SetClientCustomerId('my_client_customer_id')

Where do I submit bug reports and/or feature requests?

If you have issues directly related to the client library, use the issue tracker.

If you have issues pertaining to a specific API, use the product support forums:

How do I log SOAP interactions?

The library uses Python's built in logging framework. You can specify your configuration via the configuration file; see googleads.yaml for an example.

Alternatively, you can manually specify your logging configuration. For example, if you want to log your SOAP interactions to stdout, and you are using the Zeep soap library, you can do the following:

logging.basicConfig(level=logging.INFO, format=googleads.util.LOGGER_FORMAT)
logging.getLogger('googleads.soap').setLevel(logging.DEBUG)

If you wish to log to a file, you'll need to attach a log handler to this source which is configured to write the output to a file.

How do I disable log filters?

The zeep plugin used for logging strips sensitive data from its output. If you would like this data included in logs, you'll need to implement your own simple logging plugin. For example:

class DangerousZeepLogger(zeep.Plugin):
  def ingress(self, envelope, http_headers, operation):
    logging.debug('Incoming response: \n%s', etree.tostring(envelope, pretty_print=True))
    return envelope, http_headers

  def egress(self, envelope, http_headers, operation, binding_options):
    logging.debug('Incoming response: \n%s', etree.tostring(envelope, pretty_print=True))
    return envelope, http_headers

adwords_client.zeep_client.plugins.append(DangerousZeepLogger())

How can I configure or disable caching?

By default, clients are cached because reading and digesting the WSDL can be expensive. However, the default caching method requires permission to access a local file system that may not be available in certain hosting environments such as App Engine.

You can pass an implementation of zeep.cache.Base to the AdWordsClient or AdManagerClient initializer to modify the default caching behavior.

For example, configuring a different location and duration of the cache file with zeep

doc_cache = zeep.cache.SqliteCache(path=cache_path)
adwords_client = adwords.AdWordsClient(
  developer_token, oauth2_client, user_agent,
  client_customer_id=client_customer_id, cache=doc_cache)

You can also disable caching in similar fashion with zeep

adwords_client = adwords.AdWordsClient(
  developer_token, oauth2_client, user_agent,
  client_customer_id=client_customer_id,
  cache=googleads.common.ZeepServiceProxy.NO_CACHE)

Requirements

Python Versions

This library only supports Python 3.7+.

External Dependencies:

- httplib2             -- https://pypi.python.org/pypi/httplib2/
- oauth2client         -- https://pypi.python.org/pypi/oauth2client/
- pysocks              -- https://pypi.python.org/pypi/PySocks/
- pytz                 -- https://pypi.python.org/pypi/pytz
- pyYAML               -- https://pypi.python.org/pypi/pyYAML/
- xmltodict            -- https://pypi.python.org/pypi/xmltodict/
- zeep                 -- https://pypi.python.org/pypi/zeep
- mock                 -- https://pypi.python.org/pypi/mock
                          (only needed to run unit tests)
- pyfakefs             -- https://pypi.python.org/pypi/pyfakefs
                          (only needed to run unit tests)

Authors:

Mark Saniscalchi
David Wihl
Ben Karl

googleads-python-lib's People

Contributors

msaniscalchi avatar grivescorbett avatar wihl avatar benrkarl avatar nicholaschen avatar benkarl avatar mpaolino avatar thangduo avatar jdilallo avatar yufengg avatar andreferraro avatar jonathasreuel avatar xzkostyan avatar lsv1 avatar manuelaf avatar ncouture avatar rcotrina94 avatar sahilkukreja avatar

Stargazers

Roman avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.