Skip to content

Commit

Permalink
Changes for release v0_4. (#9)
Browse files Browse the repository at this point in the history
  • Loading branch information
msaniscalchi authored Sep 27, 2018
1 parent 7a151be commit 8ef148f
Show file tree
Hide file tree
Showing 168 changed files with 11,556 additions and 2,846 deletions.
7 changes: 6 additions & 1 deletion ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
* 0.3.0:
- Google Ads v0_4 release.
- Resolving GitHub issue #3:
https://github.com/googleads/google-ads-python/issues/3

* 0.2.0:
- Google Ads v0_3 release.

* 0.1.0:
- Initial release with support for Google Ads API v0.
- Initial release with support for Google Ads API v0.
3 changes: 3 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ Authors
-------

* `Mark Saniscalchi`_
* `David Wihl`_

.. _pip: https://pip.pypa.io/en/stable/installing
.. _template: https://github.com/googleads/google-ads-python/blob/master/google-ads.yaml
Expand All @@ -92,3 +93,5 @@ Authors
.. _API documentation: https://developers.google.com/google-ads/api/
.. _API Support: https://developers.google.com/adwords/api/community/
.. _Mark Saniscalchi: https://github.com/msaniscalchi
.. _David Wihl: https://github.com/wihl

2 changes: 1 addition & 1 deletion examples/v0/account_management/get_account_information.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def main(client, customer_id):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def main(client, customer_id, ad_group_id, bid_modifier_value):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ def main(client, customer_id, ad_group_id):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ def main(client, customer_id, campaign_id):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ def main(client, customer_id, page_size, campaign_id):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ def main(client, customer_id, page_size, ad_group_id=None):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ def main(client, customer_id):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/add_ad_groups.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def main(client, customer_id, campaign_id):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/add_campaigns.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def main(client, customer_id):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/add_expanded_text_ads.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def main(client, customer_id, ad_group_id):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/add_keywords.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ def main(client, customer_id, ad_group_id, keyword):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/get_ad_groups.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def main(client, customer_id, page_size, campaign_id=None):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/get_artifact_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ def main(client, artifact_name, page_size):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/get_campaigns.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def main(client, customer_id, page_size):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/get_expanded_text_ads.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ def main(client, customer_id, page_size, ad_group_id=None):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/get_keywords.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ def main(client, customer_id, page_size, ad_group_id=None):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/pause_ad.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def main(client, customer_id, ad_group_id, ad_id):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/remove_ad.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def main(client, customer_id, ad_group_id, ad_id):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/remove_ad_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def main(client, customer_id, ad_group_id):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/remove_campaign.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def main(client, customer_id, campaign_id):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/remove_keyword.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def main(client, customer_id, ad_group_id, criteria_id):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/update_ad_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ def main(client, customer_id, ad_group_id, bid_micro_amount):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/update_campaign.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def main(client, customer_id, campaign_id):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
2 changes: 1 addition & 1 deletion examples/v0/basic_operations/update_keyword.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def main(client, customer_id, ad_group_id, criterion_id):


if __name__ == '__main__':
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())
Expand Down
Empty file added examples/v0/billing/__init__.py
Empty file.
98 changes: 98 additions & 0 deletions examples/v0/billing/add_account_budget_proposal.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# Copyright 2018 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""This example creates an account budget proposal.
To get account budget proposal, run get_account_budget_proposals.py
"""

from __future__ import absolute_import

import argparse
import sys

import six

import google.ads.google_ads.client


def main(client, customer_id, billing_setup_id):
account_budget_proposal_service = client.get_service(
'AccountBudgetProposalService')
billing_setup_service = client.get_service('BillingSetupService')

account_budget_proposal_operation = client.get_type(
'AccountBudgetProposalOperation')
proposal = account_budget_proposal_operation.create

proposal.proposal_type = client.get_type(
'AccountBudgetProposalTypeEnum').CREATE
proposal.billing_setup.value = billing_setup_service.billing_setup_path(
customer_id, billing_setup_id)
proposal.proposed_name.value = 'Account Budget Proposal (example)'

# Specify the account budget starts immediately
proposal.proposed_start_time_type = client.get_type('TimeTypeEnum').NOW
# Alternatively you can specify a specific start time. Refer to the
# AccountBudgetProposal resource documentation for allowed formats.
#
# proposal.proposed_start_date_time = '2020-01-02 03:04:05'

# Specify that the budget runs forever
proposal.proposed_end_time_type = client.get_type('TimeTypeEnum').FOREVER
# Alternatively you can specify a specific end time. Allowed formats are as
# above.
#
# proposal.proposed_end_date_time = '2021-01-02 03:04:05'

# Optional: set notes for the budget. These are free text and do not effect
# budget delivery.
#
# proposal.proposed_notes = client.wrapper
# .string('Received prepayment of $0.01')
proposal.proposed_spending_limit_micros.value = 10000

try:
account_budget_proposal_response = (
account_budget_proposal_service.mutate_account_budget_proposal(
customer_id, account_budget_proposal_operation))
except google.ads.google_ads.errors.GoogleAdsException as ex:
print('Request with ID "%s" failed with status "%s" and includes the '
'following errors:' % (ex.request_id, ex.error.code().name))
for error in ex.failure.errors:
print('\tError with message "%s".' % error.message)
if error.location:
for field_path_element in error.location.field_path_elements:
print('\t\tOn field: %s' % field_path_element.field_name)
sys.exit(1)

print('Created account budget proposal "%s".'
% account_budget_proposal_response.result.resource_name)


if __name__ == '__main__':
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage())

parser = argparse.ArgumentParser(
description='Creates an account budget proposal.')
# The following argument(s) should be provided to run the example.
parser.add_argument('-c', '--customer_id', type=six.text_type,
required=True, help='The Ads customer ID.')
parser.add_argument('-b', '--billing_setup_id', type=six.text_type,
required=True, help='The billing setup ID.')
args = parser.parse_args()

main(google_ads_client, args.customer_id, args.billing_setup_id)
Loading

0 comments on commit 8ef148f

Please sign in to comment.