Bạn có thể sử dụng tài nguyên bidders
và các tài nguyên phụ của tài nguyên đó để quản lý báo cáo theo thời gian thực
Tích hợp tính năng đặt giá thầu hoặc hành động trên một hay nhiều tài nguyên cho người mua liên quan.
Là người đặt giá thầu, bạn cũng có thể đóng vai trò là
người mua nếu bạn đặt giá thầu trên
cho chính bạn. Điều này được thể hiện trong API bằng các tài nguyên bidders
và buyers
có cùng mã nhận dạng tài nguyên.
Truy xuất từng bên đặt giá thầu
Mã sau đây minh hoạ cách người dùng được uỷ quyền có thể truy xuất
bên đặt giá thầu riêng với
bidders.get
.
Kiến trúc chuyển trạng thái đại diện (REST)
Yêu cầu
GET https://realtimebidding.googleapis.com/v1/bidders/12345678?alt=json Authorization: Bearer <INSERT_ACCESS_TOKEN_HERE> Content-Type: application/json
Phản hồi
{ "cookieMatchingNetworkId": "devrel_test_account", "cookieMatchingUrl": "https://google.com/cm", "dealsBillingId": "10293847", "name": "bidders/12345678" }
C#
/* Copyright 2021 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 * * 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. */ using Google.Apis.RealTimeBidding.v1; using Google.Apis.RealTimeBidding.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.RealTimeBidding.Examples.v1.Bidders { /// <summary> /// Gets a single bidder for the specified bidder name. /// /// The bidder specified must be associated with the authorized service account specified in /// Utilities.cs. /// </summary> public class GetBidders : ExampleBase { private RealTimeBiddingService rtbService; /// <summary> /// Constructor. /// </summary> public GetBidders() { rtbService = Utilities.GetRealTimeBiddingService(); } /// <summary> /// Returns a description about the code example. /// </summary> public override string Description { get => "Get a bidder for the given account ID."; } /// <summary> /// Parse specified arguments. /// </summary> protected override Dictionary<string, object> ParseArguments(List<string> exampleArgs) { string[] requiredOptions = new string[] {"account_id"}; bool showHelp = false; string accountId = null; OptionSet options = new OptionSet { "Get a bidder for the given bidder account ID.", { "h|help", "Show help message and exit.", h => showHelp = h != null }, { "a|account_id=", ("[Required] The resource ID of the bidders resource that is being " + "retrieved. This will be used to construct the name used as a path " + "parameter for the bidders.get request."), a => accountId = a }, }; List<string> extras = options.Parse(exampleArgs); var parsedArgs = new Dictionary<string, object>(); // Show help message. if(showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set arguments. parsedArgs["account_id"] = accountId; // Validate that options were set correctly. Utilities.ValidateOptions(options, parsedArgs, requiredOptions, extras); return parsedArgs; } /// <summary> /// Run the example. /// </summary> /// <param name="parsedArgs">Parsed arguments for the example.</param> protected override void Run(Dictionary<string, object> parsedArgs) { string accountId = (string) parsedArgs["account_id"]; string name = $"bidders/{accountId}"; BiddersResource.GetRequest request = rtbService.Bidders.Get(name); Bidder response = null; Console.WriteLine("Getting bidder with name: {0}", name); try { response = request.Execute(); } catch (System.Exception exception) { throw new ApplicationException( $"Real-time Bidding API returned error response:\n{exception.Message}"); } Utilities.PrintBidder(response); } } }
Java
/* * Copyright 2021 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. */ package com.google.api.services.samples.authorizedbuyers.realtimebidding.v1.bidders; import com.google.api.services.realtimebidding.v1.RealTimeBidding; import com.google.api.services.realtimebidding.v1.model.Bidder; import com.google.api.services.samples.authorizedbuyers.realtimebidding.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; /** * This sample illustrates how to get a single bidder for the specified bidder name. * * <p>The bidder specified must be associated with the authorized service account specified in * Utils.java. */ public class GetBidders { public static void execute(RealTimeBidding client, Namespace parsedArgs) throws IOException { Long accountId = parsedArgs.getLong("account_id"); String name = String.format("bidders/%s", accountId); Bidder bidder = client.bidders().get(name).execute(); System.out.printf("Get bidder with ID '%s'.\n", accountId); Utils.printBidder(bidder); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("GetBidders") .build() .defaultHelp(true) .description(("Get a bidder for the given account ID.")); parser .addArgument("-a", "--account_id") .help( "The resource ID of the bidders resource that is being retrieved. This will be used to" + " construct the name used as a path parameter for the bidders.get request.") .required(true) .type(Long.class); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } RealTimeBidding client = null; try { client = Utils.getRealTimeBiddingClient(); } catch (IOException ex) { System.out.printf("Unable to create RealTimeBidding API service:\n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:\n%s", ex); System.exit(1); } try { execute(client, parsedArgs); } catch (IOException ex) { System.out.printf("RealTimeBidding API returned error response:\n%s", ex); System.exit(1); } } }
PHP
<?php /** * Copyright 2021 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. */ namespace Google\Ads\AuthorizedBuyers\RealTimeBidding\Examples\V1\Bidders; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\BaseExample; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\Config; /** * This example illustrates how to get a single bidder for the specified bidder name. * * The bidder specified must be associated with the authorized service account. */ class GetBidders extends BaseExample { public function __construct($client) { $this->service = Config::getGoogleServiceRealTimeBidding($client); } /** * @see BaseExample::getInputParameters() */ protected function getInputParameters() { return [ [ 'name' => 'account_id', 'display' => 'Account ID', 'required' => true, 'description' => 'The resource ID of the bidders resource that is being retrieved. This will ' . 'be used to construct the name used as a path parameter for the bidders.get ' . 'request.' ] ]; } /** * @see BaseExample::run() */ public function run() { $values = $this->formValues; $name = "bidders/$values[account_id]"; try { $bidder = $this->service->bidders->get($name); print '<h2>Found bidder.</h2>'; $this->printResult($bidder); } catch (Google_Service_Exception $ex) { if ($ex->getCode() === 404 || $ex->getCode() === 403) { print '<h1>Bidder not found or can\'t access bidder account.</h1>'; } else { throw $ex; } } } /** * @see BaseExample::getName() */ public function getName() { return 'Get Bidder'; } }
Python
#!/usr/bin/python # # Copyright 2021 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. """Gets a single bidder for the specified bidder name. The bidder specified must be associated with the authorized service account. """ import argparse import os import pprint import sys sys.path.insert(0, os.path.abspath('../..')) from googleapiclient.errors import HttpError import util _BIDDERS_NAME_TEMPLATE = 'bidders/%s' DEFAULT_BIDDER_RESOURCE_ID = 'ENTER_BIDDER_RESOURCE_ID_HERE' def main(realtimebidding, account_id): print(f'Get Bidder with ID "{account_id}":') try: # Construct and execute the request. response = realtimebidding.bidders().get( name=_BIDDERS_NAME_TEMPLATE % account_id).execute() except HttpError as e: print(e) sys.exit(1) pprint.pprint(response) if __name__ == '__main__': try: service = util.GetService(version='v1') except IOError as ex: print(f'Unable to create realtimebidding service - {ex}') print('Did you specify the key file in util.py?') sys.exit(1) parser = argparse.ArgumentParser( description=('Get a bidder for the given account ID.')) # Required fields. parser.add_argument( '-a', '--account_id', default=DEFAULT_BIDDER_RESOURCE_ID, help=('The resource ID of the bidders resource that is being retrieved. ' 'This will be used to construct the name used as a path parameter ' 'for the bidders.get request.')) args = parser.parse_args() main(service, args.account_id)
Ruby
#!/usr/bin/env ruby # Encoding: utf-8 # # Copyright:: Copyright 2021 Google LLC # # License:: 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. # # Gets a single bidder for the specified bidder name. # # The bidder specified must be associated with the service account specified in util.rb. require 'optparse' require_relative '../../util' def get_bidders(realtimebidding, options) name = "bidders/#{options[:account_id]}" puts "Get bidder with name '#{name}'" bidder = realtimebidding.get_bidder(name) print_bidder(bidder) end if __FILE__ == $0 begin # Retrieve the service used to make API requests. service = get_service() rescue ArgumentError => e raise 'Unable to create service, with error message: #{e.message}' rescue Signet::AuthorizationError => e raise 'Unable to create service, was the KEY_FILE in util.rb set? Error message: #{e.message}' end # Set options and default values for fields used in this example. options = [ Option.new( 'account_id', 'The resource ID of the bidders resource that is being retrieved. This will be used to '\ 'construct the name used as a path parameter for the bidders.get request.', type: Integer, short_alias: 'a', required: true, default_value: nil ), ] # Parse options. parser = Parser.new(options) opts = parser.parse(ARGV) begin get_bidders(service, opts) rescue Google::Apis::ServerError => e raise "The following server error occured:\n#{e.message}" rescue Google::Apis::ClientError => e raise "Invalid client request:\n#{e.message}" rescue Google::Apis::AuthorizationError => e raise "Authorization error occured:\n#{e.message}" end end
Truy xuất danh sách bên đặt giá thầu
Mã sau đây minh hoạ cách người dùng được cấp phép có thể truy xuất danh sách
tất cả bên đặt giá thầu liên kết với Google hoặc tài khoản dịch vụ của họ
bidders.list
.
Kiến trúc chuyển trạng thái đại diện (REST)
Yêu cầu
GET https://realtimebidding.googleapis.com/v1/bidders?pageSize=50&alt=json Authorization: Bearer <INSERT_ACCESS_TOKEN_HERE> Content-Type: application/json
Phản hồi
{ "bidders": [ { "cookieMatchingNetworkId": "devrel_test_account", "cookieMatchingUrl": "https://google.com/cm", "dealsBillingId": "10293847", "name": "bidders/12345678" } ] }
C#
/* Copyright 2021 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 * * 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. */ using Google.Apis.RealTimeBidding.v1; using Google.Apis.RealTimeBidding.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.RealTimeBidding.Examples.v1.Bidders { /// <summary> /// Lists bidders associated with the authorized service account. /// </summary> public class ListBidders : ExampleBase { private RealTimeBiddingService rtbService; /// <summary> /// Constructor. /// </summary> public ListBidders() { rtbService = Utilities.GetRealTimeBiddingService(); } /// <summary> /// Returns a description about the code example. /// </summary> public override string Description { get => "This code example lists all bidders associated with the service account " + "specified for the OAuth 2.0 flow in Utilities.cs."; } /// <summary> /// Parse specified arguments. /// </summary> protected override Dictionary<string, object> ParseArguments(List<string> exampleArgs) { string[] requiredOptions = new string[] {}; bool showHelp = false; int? pageSize = null; OptionSet options = new OptionSet { "List bidders associated with the authorized service account.", { "h|help", "Show help message and exit.", h => showHelp = h != null }, { "p|page_size=", ("The number of rows to return per page. The server may return fewer rows " + "than specified."), (int p) => pageSize = p }, }; List<string> extras = options.Parse(exampleArgs); var parsedArgs = new Dictionary<string, object>(); // Show help message. if(showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set arguments. parsedArgs["page_size"] = pageSize ?? Utilities.MAX_PAGE_SIZE; // Validate that options were set correctly. Utilities.ValidateOptions(options, parsedArgs, requiredOptions, extras); return parsedArgs; } /// <summary> /// Run the example. /// </summary> /// <param name="parsedArgs">Parsed arguments for the example.</param> protected override void Run(Dictionary<string, object> parsedArgs) { string pageToken = null; Console.WriteLine("Listing bidders for the authorized service account:"); do { BiddersResource.ListRequest request = rtbService.Bidders.List(); request.PageSize = (int) parsedArgs["page_size"]; request.PageToken = pageToken; ListBiddersResponse page = null; try { page = request.Execute(); } catch (System.Exception exception) { throw new ApplicationException( $"Real-time Bidding API returned error response:\n{exception.Message}"); } var bidders = page.Bidders; pageToken = page.NextPageToken; if(bidders == null) { Console.WriteLine("No bidders found."); } else { foreach (Bidder bidder in bidders) { Utilities.PrintBidder(bidder); } } } while(pageToken != null); } } }
Java
/* * Copyright 2021 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. */ package com.google.api.services.samples.authorizedbuyers.realtimebidding.v1.bidders; import com.google.api.services.realtimebidding.v1.RealTimeBidding; import com.google.api.services.realtimebidding.v1.model.Bidder; import com.google.api.services.realtimebidding.v1.model.ListBiddersResponse; import com.google.api.services.samples.authorizedbuyers.realtimebidding.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import java.util.List; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; /** This sample illustrates how to list bidders associated with the authorized service account. */ public class ListBidders { public static void execute(RealTimeBidding client, Namespace parsedArgs) throws IOException { Integer pageSize = parsedArgs.getInt("page_size"); String pageToken = null; System.out.println("Listing bidders associated with OAuth 2.0 credentials."); do { List<Bidder> bidders = null; ListBiddersResponse response = client.bidders().list().setPageSize(pageSize).setPageToken(pageToken).execute(); bidders = response.getBidders(); pageToken = response.getNextPageToken(); if (bidders == null) { System.out.println("No bidders found."); } else { for (Bidder bidder : bidders) { Utils.printBidder(bidder); } } } while (pageToken != null); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("ListBidders") .build() .defaultHelp(true) .description( "Lists bidders associated with the service account specified for the " + "OAuth 2.0 flow in Utils.java"); parser .addArgument("-p", "--page_size") .help( "The number of rows to return per page. The server may return fewer rows than " + "specified.") .setDefault(Utils.getMaximumPageSize()) .type(Integer.class); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } RealTimeBidding client = null; try { client = Utils.getRealTimeBiddingClient(); } catch (IOException ex) { System.out.printf("Unable to create RealTimeBidding API service:\n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:\n%s", ex); System.exit(1); } try { execute(client, parsedArgs); } catch (IOException ex) { System.out.printf("RealTimeBidding API returned error response:\n%s", ex); System.exit(1); } } }
PHP
<?php /** * Copyright 2021 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. */ namespace Google\Ads\AuthorizedBuyers\RealTimeBidding\Examples\V1\Bidders; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\BaseExample; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\Config; /** * This example illustrates how to list bidders associated with the authorized service account. */ class ListBidders extends BaseExample { public function __construct($client) { $this->service = Config::getGoogleServiceRealTimeBidding($client); } /** * @see BaseExample::getInputParameters() */ protected function getInputParameters() { return [ [ 'name' => 'page_size', 'display' => 'Page size', 'required' => false, 'description' => 'The number of rows to return per page. The server may return fewer rows ' . 'than specified.', 'default' => 10 ] ]; } /** * @see BaseExample::run() */ public function run() { $values = $this->formValues; $queryParams = [ 'pageSize' => $values['page_size'] ]; $result = $this->service->bidders->listBidders($queryParams); print "<h2>Listing bidders associated with OAuth 2.0 credentials:</h2>"; if (empty($result['bidders'])) { print '<p>No Bidders found</p>'; } else { foreach ($result['bidders'] as $bidder) { $this->printResult($bidder); } } } /** * @see BaseExample::getName() */ public function getName() { return 'List Bidders'; } }
Python
#!/usr/bin/python # # Copyright 2021 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. """Lists bidders associated with the authorized service account.""" import argparse import os import pprint import sys sys.path.insert(0, os.path.abspath('../..')) from googleapiclient.errors import HttpError import util def main(realtimebidding, args): page_size = args.page_size page_token = None more_pages = True print(f'Listing bidders associated with OAuth 2.0 credentials.') while more_pages: try: # Construct and execute the request. response = realtimebidding.bidders().list( pageToken=page_token, pageSize=page_size).execute() except HttpError as e: print(e) sys.exit(1) pprint.pprint(response) page_token = response.get('nextPageToken') more_pages = bool(page_token) if __name__ == '__main__': try: service = util.GetService(version='v1') except IOError as ex: print(f'Unable to create realtimebidding service - {ex}') print('Did you specify the key file in util.py?') sys.exit(1) parser = argparse.ArgumentParser( description=('Lists bidders associated with the service account ' 'specified for the OAuth 2.0 flow in util.py.')) # Optional fields. parser.add_argument( '-p', '--page_size', default=util.MAX_PAGE_SIZE, help=('The number of rows to return per page. The server may return ' 'fewer rows than specified.')) args = parser.parse_args() main(service, args)
Ruby
#!/usr/bin/env ruby # Encoding: utf-8 # # Copyright:: Copyright 2021 Google LLC # # License:: 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. # # Lists bidders associated with the service account specified in util.rb. require 'optparse' require_relative '../../util' def list_bidders(realtimebidding, options) page_size = options[:page_size] page_token = nil puts "Listing bidders associated with OAuth 2.0 credentials." begin response = realtimebidding.list_bidders( page_size: page_size, page_token: page_token ) page_token = response.next_page_token unless response.bidders.nil? response.bidders.each do |bidder| print_bidder(bidder) end else puts 'No bidders found.' end end until page_token == nil end if __FILE__ == $0 begin # Retrieve the service used to make API requests. service = get_service() rescue ArgumentError => e raise 'Unable to create service, with error message: #{e.message}' rescue Signet::AuthorizationError => e raise 'Unable to create service, was the KEY_FILE in util.rb set? Error message: #{e.message}' end # Set options and default values for fields used in this example. options = [ Option.new( 'page_size', 'The number of rows to return per page. The server may return fewer rows than specified.', type: Array, short_alias: 'u', required: false, default_value: MAX_PAGE_SIZE ), ] # Parse options. parser = Parser.new(options) opts = parser.parse(ARGV) begin list_bidders(service, opts) rescue Google::Apis::ServerError => e raise "The following server error occured:\n#{e.message}" rescue Google::Apis::ClientError => e raise "Invalid client request:\n#{e.message}" rescue Google::Apis::AuthorizationError => e raise "Authorization error occured:\n#{e.message}" end end