The AdWords API will sunset on April 27, 2022. Migrate to the Google Ads API to take advantage of the latest Google Ads features.

Miscellaneous Samples

The code samples below provide examples of miscellaneous management functions available in the AdWords API. Client Library.

Get all images and videos

#!/usr/bin/perl -w
#
# Copyright 2017, Google Inc. All Rights Reserved.
#
# 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
#
#     http://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 code example gets all videos and images.
# Use the Google Ads website to upload new videos.
# To upload an image, run misc/upload_image.pl.

use strict;
use lib "../../../lib";

use Google::Ads::AdWords::Client;
use Google::Ads::AdWords::Logging;
use Google::Ads::AdWords::v201809::OrderBy;
use Google::Ads::AdWords::v201809::Paging;
use Google::Ads::AdWords::v201809::Predicate;
use Google::Ads::AdWords::v201809::Selector;
use Google::Ads::Common::MapUtils;
use Google::Ads::AdWords::Utilities::PageProcessor;

use Cwd qw(abs_path);

use constant PAGE_SIZE => 500;

# Example main subroutine.
sub get_all_images_and_video {
  my $client = shift;

  # Create predicates.
  my $media_type_predicate = Google::Ads::AdWords::v201809::Predicate->new({
      field    => "Type",
      operator => "IN",
      values   => ["IMAGE", "VIDEO"]
    }
  );

  # Create selector.
  my $paging = Google::Ads::AdWords::v201809::Paging->new({
      startIndex    => 0,
      numberResults => PAGE_SIZE
    }
  );
  my $selector = Google::Ads::AdWords::v201809::Selector->new({
      fields => ["MediaId", "Name", "MimeType", "Width", "Height"],
      predicates => [$media_type_predicate],
      ordering   => [
        Google::Ads::AdWords::v201809::OrderBy->new({
            field     => "Name",
            sortOrder => "ASCENDING"
          }
        )
      ],
      paging => $paging
    }
  );

  # Paginate through results.
  # The contents of the subroutine will be executed for each image/video.
  Google::Ads::AdWords::Utilities::PageProcessor->new({
      client   => $client,
      service  => $client->MediaService(),
      selector => $selector
    }
    )->process_entries(
    sub {
      my ($media) = @_;
      if ($media->isa("Google::Ads::AdWords::v201809::Image")) {
        my $dimensions =
          Google::Ads::Common::MapUtils::get_map($media->get_dimensions());
        printf "Image with id \"%s\", dimensions \"%dx%d\", and MIME type " .
          "\"%s\" was found.\n", $media->get_mediaId(),
          $dimensions->{"FULL"}->get_width(),
          $dimensions->{"FULL"}->get_height(), $media->get_mimeType();
      } else {
        printf "Video with id \"%s\" and name \"%s\" was found.\n",
          $media->get_mediaId(), $media->get_name();
      }
    }
    );

  return 1;
}

# Don't run the example if the file is being included.
if (abs_path($0) ne abs_path(__FILE__)) {
  return 1;
}

# Log SOAP XML request, response and API errors.
Google::Ads::AdWords::Logging::enable_all_logging();

# Get AdWords Client, credentials will be read from ~/adwords.properties.
my $client = Google::Ads::AdWords::Client->new({version => "v201809"});

# By default examples are set to die on any server returned fault.
$client->set_die_on_faults(1);

# Call the example
get_all_images_and_video($client);

Upload an image

#!/usr/bin/perl -w
#
# Copyright 2017, Google Inc. All Rights Reserved.
#
# 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
#
#     http://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 uploads an image. To get images, run
# misc/get_all_images_and_video.pl.

use strict;
use lib "../../../lib";

use Google::Ads::AdWords::Client;
use Google::Ads::AdWords::Logging;
use Google::Ads::AdWords::v201809::Image;
use Google::Ads::Common::MapUtils;
use Google::Ads::Common::MediaUtils;

use Cwd qw(abs_path);

# Example main subroutine.
sub upload_image {
  my $client = shift;

  # Create image.
  my $image_data = Google::Ads::Common::MediaUtils::get_base64_data_from_url(
    "https://goo.gl/3b9Wfh");
  my $image = Google::Ads::AdWords::v201809::Image->new({
      data => $image_data,
      type => "IMAGE"
    }
  );

  # Upload image.
  $image = $client->MediaService()->upload({media => [$image]});

  # Display images.
  if ($image) {
    my $dimensions =
      Google::Ads::Common::MapUtils::get_map($image->get_dimensions());
    printf(
      "Image with id \"%s\", dimensions \"%dx%d\", and MIME type \"%s\" " .
        "was uploaded.\n",
      $image->get_mediaId(),
      $dimensions->{"FULL"}->get_width(),
      $dimensions->{"FULL"}->get_height(),
      $image->get_mimeType()
    );
  } else {
    print "No image was uploaded.\n";
  }

  return 1;
}

# Don't run the example if the file is being included.
if (abs_path($0) ne abs_path(__FILE__)) {
  return 1;
}

# Log SOAP XML request, response and API errors.
Google::Ads::AdWords::Logging::enable_all_logging();

# Get AdWords Client, credentials will be read from ~/adwords.properties.
my $client = Google::Ads::AdWords::Client->new({version => "v201809"});

# By default examples are set to die on any server returned fault.
$client->set_die_on_faults(1);

# Call the example
upload_image($client);


Upload an HTML5 zip file as a MediaBundle

#!/usr/bin/perl -w
#
# Copyright 2017, Google Inc. All Rights Reserved.
#
# 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
#
#     http://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 uploads an HTML5 zip file as a MediaBundle.

use strict;
use lib "../../../lib";

use Google::Ads::AdWords::Client;
use Google::Ads::AdWords::Logging;
use Google::Ads::AdWords::v201809::MediaBundle;
use Google::Ads::Common::MapUtils;
use Google::Ads::Common::MediaUtils;

use Cwd qw(abs_path);

# Example main subroutine.
sub upload_media_bundle {
  my $client = shift;

  # Create $zip media.
  my $html5_zip = Google::Ads::Common::MediaUtils::get_base64_data_from_url(
    "https://goo.gl/9Y7qI2");

  # Create a media bundle containing the zip file with all the HTML5 components.
  my $media_bundle = Google::Ads::AdWords::v201809::MediaBundle->new({
      data       => $html5_zip,
      type       => "MEDIA_BUNDLE"
  });

  # Upload HTML5 zip.
  $media_bundle = $client->MediaService()->upload({media => [$media_bundle]});

  # Display HTML5 zip.
  if ($media_bundle) {
    my $dimensions =
      Google::Ads::Common::MapUtils::get_map($media_bundle->get_dimensions());
    printf(
      "Media bundle with ID %d, dimensions \"%dx%d\", and MIME type \"%s\ " .
        "was uploaded.\n",
      $media_bundle->get_mediaId(),
      $dimensions->{"FULL"}->get_width(),
      $dimensions->{"FULL"}->get_height(),
      $media_bundle->get_mimeType()
    );
  } else {
    print "No media bundle was uploaded.\n";
  }

  return 1;
}

# Don't run the example if the file is being included.
if (abs_path($0) ne abs_path(__FILE__)) {
  return 1;
}

# Log SOAP XML request, response and API errors.
Google::Ads::AdWords::Logging::enable_all_logging();

# Get AdWords Client, credentials will be read from ~/adwords.properties.
my $client = Google::Ads::AdWords::Client->new({version => "v201809"});

# By default examples are set to die on any server returned fault.
$client->set_die_on_faults(1);

# Call the example
upload_media_bundle($client);