Re: Reporting error : ERROR_GETTING_RESPONSE_FROM_BACKEND Unable to read report data
Hi David, We haven't seen the related backend issue. If it still persists, please let us know. Best, - Takeshi, AdWords API Team On Friday, July 19, 2013 5:31:02 PM UTC+9, david wrote: Last couple of nights we've been getting the above error when download a large keyword performance report. If I rerun the report in the morning it tends to work OK. We have moved to v201306 3 days ago and have only seen this after the move. Any ideas whether there's any backend issues causing this? -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Ad cost report with only impression keyword
Hi Vanessa, You can include the Cost field in Keyword Performance Reporthttps://developers.google.com/adwords/api/docs/appendix/reports#keywords . But an impression isn't charged (unless CPM for Display network. But I think it's not relevant to this question). So costs for a keyword only has impressions are basically 0. Best, - Takeshi, AdWords API Team On Friday, July 19, 2013 8:28:24 PM UTC+9, Rocio Delaney wrote: Hi everyone, I need to know how I can get information about the cost of an only-impression keyword for different ad-position (or even only one specific ad-position). The only information available at the moment is first page Bid (Not always I reckon). But this never lett us where ad_position can be treated as. Thanks Vanessa -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: OAUTH_TOKEN_INVALID ruby client
Hi Matthew, Looks like the access_token (it expires in one hour) was issued at 2013-07-19 14:56:06 -0400. So at the time you made a request, the access token seemed to expire. If you make the oauth token request in offline mode, the response should contain refresh_token (that never expires). Using that you can get a new access toke if the existing access token is about to expire. I'm asking the ruby library maintainer on how to make a offline oauth token request in more detail. Best, - Takeshi, AdWords API Team On Saturday, July 20, 2013 4:01:13 AM UTC+9, Matthew Ledom wrote: I keep receiving this error when I try to use a service. In this instance I'm use the campaign service. I had everything working with ClientLogin and found that Reports are only supported with OAUTH2 so I'm trying to get that implemented. I have setup my app to retrieve a offline token via the browser redirect work flow. I have also setup my adword model to request a new access token using the provided refresh token from the previous step. I can take that token and use it in the following code: api.authorize(:oauth2_token = token ) where token: {access_token=ya29.AxxxXh6zvQ, token_type=Bearer, expires_in=3600, id_token= eyJhbxxxB3MO4} this returns: {:access_token=ya29.AHEJXh6zvQ, :refresh_token=nil, :issued_at=2013-07-19 14:56:06 -0400, :expires_in=3600, :id_token= eyJhbxxxLB3MO4} When I use this api object to call the campaign service I get the output provided below. The reporting download is the final piece needed to approval and I've searched all over this group and the web and can't find anything that helps. I'm using the latest versions of the ruby gem: google-ads-common (0.9.3) and google-adwords-api (0.9.3) SOAP request: https://adwords.google.com/api/adwords/cm/v201302/CampaignService Accept-Encoding: gzip,deflate, SOAPAction: get, User-Agent: bw_console (AwApi-Ruby/0.9.3, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, curb), Authorization: Bearer ya29.AHxXh6zvQ, Content-Type: text/xml;charset=UTF-8, Content-Length: 837 ?xml version=1.0 encoding=UTF-8?env:Envelope xmlns:xsd= http://www.w3.org/2001/XMLSchema; xmlns:xsi= http://www.w3.org/2001/XMLSchema-instance; xmlns:wsdl= https://adwords.google.com/api/adwords/cm/v201302; xmlns:env= http://schemas.xmlsoap.org/soap/envelope/;env:Headerwsdl:RequestHeader xmlns=https://adwords.google.com/api/adwords/cm/v201302;userAgentconsole (AwApi-Ruby/0.9.3, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, curb)/userAgentdeveloperTokenh6Axxxweg/developerToken/wsdl:RequestHeader/env:Headerenv:Bodyget xmlns=https://adwords.google.com/api/adwords/cm/v201302 serviceSelectorfieldsId/fieldsfieldsName/fieldsfieldsStatus/fieldsorderingfieldName/fieldsortOrderASCENDING/sortOrder/ordering/serviceSelector/get/env:Body/env:Envelope HTTPI executes HTTP POST using the curb adapter SOAP response (status 500): soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/;soap:HeaderResponseHeader xmlns=https://adwords.google.com/api/adwords/cm/v201302;requestId0004e1e1b8b62a800aed881c1a3b/requestIdserviceNameCampaignService/serviceNamemethodNameget/methodNameoperations0/operationsresponseTime23/responseTimeunits0/units/ResponseHeader/soap:Headersoap:Bodysoap:Faultfaultcodesoap:Server/faultcodefaultstring[AuthenticationError.OAUTH_TOKEN_INVALID @ ; trigger:'lt;nullgt;']/faultstringdetailApiExceptionFault xmlns= https://adwords.google.com/api/adwords/cm/v201302;message[AuthenticationError.OAUTH_TOKEN_INVALID @ ; trigger:'lt;nullgt;']/messageApplicationException.TypeApiException/ApplicationException.Typeerrors xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xsi:type=AuthenticationErrorfieldPath/fieldPathtriggerlt;nullgt;/triggererrorStringAuthenticationError.OAUTH_TOKEN_INVALID/errorStringApiError.TypeAuthenticationError/ApiError.TypereasonOAUTH_TOKEN_INVALID/reason/errors/ApiExceptionFault/detail/soap:Fault/soap:Body/soap:Envelope Content-Type: text/xml; charset=UTF-8, Date: Fri, 19 Jul 2013 18:44:49 GMT, Expires: Fri, 19 Jul 2013 18:44:49 GMT, Cache-Control: private, max-age=0, X-Content-Type-Options: nosniff, X-Frame-Options: SAMEORIGIN, X-XSS-Protection: 1; mode=block, Server: GSE, Transfer-Encoding: chunked AdwordsApi::V201302::CampaignService::ApiException: [AuthenticationError.OAUTH_TOKEN_INVALID @ ; trigger:'null'] Thank you to anyone that can help. I really need to get this integration completed. -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to
Re: Adding Destination URLs with ValueTrack parameters not working
Hi Chris, There are some validations for destination URL such as the URL should start with http or https. The text cosists of only inside the {} tags is not allowed. Best, - Takeshi, AdWords API Team On Saturday, July 20, 2013 4:22:40 AM UTC+9, Chris wrote: Hi Guys, I'm testing out adding keywords and ads with ValueTrack parameters in the destination url, and noticing there are some problems. A dest url such as http://{ifmobile: www.keywordtest.com/?myid=df32}{ifnotmobile:www.keywordtest.com/?myid=df33http://www.keywordtest.com/?myid=df32%7D%7Bifnotmobile:www.keywordtest.com/?myid=df33} will work, whilst the url {ifmobile: http://www.keywordtest.com/?myid=df32}{ifnotmobile:http://www.keywordtest.com/?myid=df33} will not work. The error returned says URL_MALFORMED, and the part of the url that triggers the problem is shown as '' i.e. empty. It appears to me that providing a destination url which only consists of text inside the {} results in an error. Could anyone confirm this? I would like to have the option of destination urls where the only text is included inside the {}s Cheers, Chris -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Problems with starting of API
Hi, Please provide the account Customer ID for ClientCustomerId in the Web.config file. It means your request targets the clientCustomerId specified in that file. There is no setting named MCCID or Customer ID Best, - Takeshi, AdWords API Team On Thursday, July 18, 2013 3:12:45 PM UTC+9, da...@woodenark.com wrote: Hi, I got the following mail from developer team. I downloaded the applicationo of .NET, but there is no MCCID, no Customer ID. Is there a possibility of getting a correct Web.config file? David Dear Developer, We have received your application for a test account for the Adwords API. After review, we have now enabled the following AdWords Customer IDs for testing with the API: Your developer MCCID:* Your new test account Customer ID: ** If you have any questions regarding the usage of your Adwords API test accounts, please visit our developers help page at: https://developers.google.com/adwords/api/docs/test-accounts Regards, The Adwords API Team -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Test account api-not working-Quotacheckerror[incomplete_signup]
Hi, Please try it again after you receive an approved email for a test account. Best, - Takeshi, AdWords API Team On Thursday, July 18, 2013 8:23:11 PM UTC+9, tomfl...@gmail.com wrote: Hi, I have followed the instructions and registered for a test account from my existing MCC account, I have filled out the billing T C's correctly, I am seeing the following error: Quotacheckerror[Incomplete_signup] Now, I have ticked all the T C's etc, so think it relate to the test account access, I have yet to receive an approval email still-please advise on any guidance. Many Thanks, Tom. -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Icomplete signup error despite accepting terms and conditions
Hi Danial, I created a new account and entered the billing details at the MCC level. I then applied for a test account. I am now able to run the scripts successfully. Thanks for all the help. Jaison -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Sandbox, OAuth 2.0
Hello Matthew, Yes, test accounts are the same account as production ones, except they don't serve. So OAuth2 can be used with them. -Danial, AdWords API Team. On Saturday, July 20, 2013 12:51:31 AM UTC+4, Matthew Ledom wrote: Can test accounts be used with OAuth2? On Wednesday, June 5, 2013 4:41:15 AM UTC-4, Danial Klimkin wrote: Hello, The sandbox was replaced with Test Accounts. See: https://developers.google.com/adwords/api/docs/test-accounts -Danial, AdWords API Team. On Monday, June 3, 2013 4:18:59 PM UTC+4, rocs...@gmail.com wrote: For getting access_token i am using client library: aw_api_php_lib_4.2.2_src/examples/v201302/Misc/UseOAuth2.php In result: *Log in to your AdWords account and open the following URL: https://accounts.google.com/o/oauth2/auth?response_type=codeclient_id=INSERT_OAUTH2_CLIENT_ID_HEREredirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoobscope=https%3A%2F%2Fsandbox-adwords.google.com%2Fapi%2Fadwords%2Faccess_type=offline * *After approving the token enter the authorization code here: * But when i try to visit link: https://accounts.google.com/o/oauth2/auth?response_type=codeclient_id=826719210143-rb159ue7ck9kinf3i1ge250vipt92dgj.apps.googleusercontent.comredirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoobscope=https%3A%2F%2Fsandbox-adwords.google.com%2Fapi%2Fadwords%2Faccess_type=offline I have an error: invalid_scope Some requested scopes were invalid. {invalid=[ https://sandbox-adwords.google.com/api/adwords/]} -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Oauth2 jwt ruby issue
I am closing this thread as it is an old one, unrelated to this question (it was about jwt) and the same question is discussed on several other threads. -Danial, AdWords API Team. On Saturday, July 20, 2013 2:30:47 AM UTC+4, Matthew Ledom wrote: Did you ever answer the question about using the refresh token in: token = { :refresh_token = '' } api.authorize({:oauth2_token = token}) The sample app does not show how to use that. I have setup the sample app and it works great. In my application I can't have the user logging in all the time and I'm trying to store the refresh token, access token and even the code from the browser redirect auth. I can't figure out how to use the different tokens to authenicate without getting OAUTH_TOKEN_INVALID On Tuesday, March 26, 2013 3:28:11 AM UTC-4, Danial Klimkin wrote: Hello hagay, Yes, JWT is supported in the Ruby library. See this example: https://code.google.com/p/google-api-ads-ruby/source/browse/adwords_api/examples/v201302/misc/use_oauth2_jwt.rb Most likely you only need to alter your configuration file to include: :authentication: :method: OAUTH2_JWT :oauth2_issuer: 'your issuer' :oauth2_secret: 'your secret' :oauth2_keyfile: '/path/to/the/keyfile' :oauth2_prn: 'account to impersonate' -Danial, AdWords API Team. On Wednesday, March 20, 2013 7:10:04 PM UTC+4, hagay wrote: Hi Daniel, In my company we have our own domain. and we prefer to gain oauth2 without user interaction as the nature of our application is server side only. Is the Oauth2 jwt working for ruby users? if not is there a chance to use another library (say python) in order to use the oauth2-jwt What do i need to prepare in order to use oauth2-jwt. Your help are most appreciated. hagay. On Monday, February 18, 2013 1:16:35 PM UTC+2, Danial Klimkin wrote: Hello, I am sorry we can not provide support on domain administration. Please consider using non-JWT flow (which is a better approach in most cases) as I outlined in this thread. -Danial, AdWords API Team. On Thursday, February 14, 2013 7:06:28 PM UTC+4, jmcu...@restorando.comwrote: Hi Danial, I'm having the same problem here. I'm using OAuth2_Jwt with this config: :oauth2_issuer: xx...@developer.gserviceaccount.com' :oauth2_secret: 'notasecret' :oauth2_keyfile: '/path/to/privatekey.p12' :oauth2_prn: 'email i use to log in to google adwords account' # Other parameters. :developer_token: 'xx' :client_customer_id: '' and I get this message: Signet::AuthorizationError: Authorization failed. Server message: { error : access_denied } I manage my own domain but I cannot find how to grant the application to impersonate users for AdWords without using the Business Edition. Could you please tell me how could I do that? On Thursday, February 14, 2013 10:26:32 AM UTC-3, hagay wrote: Hi Daniel, Ok. In that case i guess I should use the the Oauth2 . The issue is that I need to access the adsowrds api (using oauth2) *without user interaction*. Do i still need the 'Service account' or 'Installed Application' ? If I need to use the 'Installed Application' how can i fetch the verification_code every time i restart my server ? Thanks for your help. hagay. On Thursday, February 14, 2013 12:40:29 PM UTC+2, Danial Klimkin wrote: Hello hagay, You should only use OAUTH2_JWT if you are administering your own domain. If you access 3rd party accounts, you should use plain OAUTH2. In case you do manage the domain, you need to grant the application to impersonate users for AdWords, please check with your domain administrator on have to do this. See also: https://developers.google.com/accounts/docs/OAuth2ServiceAccount -Danial, AdWords API Team. On Wednesday, February 13, 2013 6:55:14 PM UTC+4, hagay wrote: Hi, I am writing server side application that using adwords_api, witch mean i should use OAUTH2_JWT, right? To create the client id i used the api console with the option of 'service_account'. to the config file i am using: :authentication = { :method: OAUTH2_JWT :oauth2_issuer: the email address i got within the creation of the this client id :oauth2_secret: *notasecret* #Is it correct? :oauth2_keyfile: '/path/to/key.p12' # this filed downloaded :developer_token: 'dev_token', :client_customer_id: '123-456-7890'# the client_customer_id i used with the adwords api } i am getting the error: Signet::AuthorizationError: Authorization failed. Server message: { error : invalid_grant } what am i doing wrong? On Tuesday, January 15, 2013 2:04:53 PM UTC+2, Danial Klimkin wrote: Hello Georgi, If you initialize the library with a hash, you need to make sure to provide all required credentials. Make sure to include all required fields like this: adwords =
v201306 problem retrieving rule-based remarketing lists with AdwordsUserListService
I'm switching from v201209 to v201306 and I'm noticing some strange behavior. With this update i've had to move from the UserListService to the AdwordsUserListService for UserList management but they seem to be giving different results. When I used to try and pull all user lists for a given account with the UserListService i'd get both rule-based and tag-based lists, but now with the AdwordsUserListService i'm only getting the tag-based lists back. Is this expected? Is there any way to get the rule-based lists? Thanks. -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ReportDefinitionError.CUSTOMER_SERVING_TYPE_REPORT_MISMATCH with FieldPath Selector for multi clients
Hello Anash I am trying to download report from google adwords using API. But it gives me error ReportDefinitionError.CUSTOMER_SERVING_TYPE_REPORT_MISMATCHselector I am new to google adwords API Please Help Me. For download Report I am using Below code : using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Diagnostics; using System.Net; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } public bool DownloadReportDefinition(string reportDefinitionXml, string authToken, string clientCustomerId, string developerToken, string filePath, bool downloadInMicros) { Uri downloadUrl = new Uri(https://adwords.google.com/api/adwords/reportdownload/v201306;); WebRequest request = HttpWebRequest.Create(downloadUrl); request.Headers.Add(clientCustomerId: + clientCustomerId); request.Headers.Add(developerToken: + developerToken); request.Headers.Add(Authorization: GoogleLogin auth= + authToken); request.Headers.Add(returnMoneyInMicros: + downloadInMicros.ToString().ToLower()); request.Method = POST; request.ContentType = application/x-www-form-urlencoded; using (StreamWriter writer = new StreamWriter(request.GetRequestStream())) { writer.Write(__rdxml= + HttpUtility.UrlEncode(reportDefinitionXml)); } WebResponse response = null; bool success = false; try { response = request.GetResponse(); success = true; } catch (WebException ex) { // The server will return an error code other than 200 if something goes wrong. The actual reason for // failure can be found by reading the response. response = ex.Response; } DownloadReportToFile(filePath, response); return success; } private static void DownloadReportToFile(string filePath, WebResponse response) { FileStream outputStream = File.Create(filePath); using (Stream responseStream = response.GetResponseStream()) { CopyStream(responseStream, outputStream); } outputStream.Close(); } private static void CopyStream(Stream sourceStream, Stream targetStream) { int bufferSize = 2 20; byte[] buffer = new byte[bufferSize]; int bytesRead = 0; while ((bytesRead = sourceStream.Read(buffer, 0, bufferSize)) != 0) { targetStream.Write(buffer, 0, bytesRead); } } protected void btnDownloadRepot_Click(object sender, EventArgs e) { // string reportDefination = ; reportDefination = reportDefinition; reportDefination = reportDefination + selector; reportDefination = reportDefination + fieldsId/fields; reportDefination = reportDefination + fieldsDate/fields; reportDefination = reportDefination + fieldsAdGroupId/fields; reportDefination = reportDefination + fieldsImpressions/fields; reportDefination = reportDefination + fieldsClicks/fields; reportDefination = reportDefination + fieldsCost/fields; reportDefination = reportDefination + fieldsConversions/fields; reportDefination = reportDefination + fieldsConversionValue/fields; reportDefination = reportDefination + fieldsAveragePosition/fields; reportDefination = reportDefination + dateRange; reportDefination = reportDefination + min20130701/min; reportDefination = reportDefination + max20130718/max; reportDefination = reportDefination + /dateRange; reportDefination = reportDefination + /selector; reportDefination = reportDefination + reportNameAD PERFORMANCE REPORT/reportName; reportDefination = reportDefination + reportTypeAD_PERFORMANCE_REPORT/reportType; reportDefination = reportDefination + dateRangeTypeCUSTOM_DATE/dateRangeType; reportDefination = reportDefination + downloadFormatXML/downloadFormat; reportDefination = reportDefination + /reportDefinition; string authetoken = ; authetoken = xyz; DownloadReportDefinition(reportDefination, authetoken, 123, abc, C:\\Users\\deepak.singh\\Documents, true); } } Thanks Warm Regards Deepak Singh -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For
v201306 retrieving rule-based remarketing lists
I'm updating from v201209 to v201306 which requires me to move from the UserListService to the AdwordsUserListService for user list management and I've noticed something strange. Previously when I made a call to retrieve all userlists from a given account I would get both rule-based and tag-based lists. However now I only get the tag-based lists. Is this the expected behavior with this new service or am I just missing something? Is there any way to retrieve those rule-based lists now? Thanks. -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
How can I see my token review progress?
Hi, I changed my product's spec and submitted it via AdWords API Tool Change Form, but I had no reply for 2 weeks. So, I emailed to adwordsapi-tok...@google.com. They replied that check my Developer Contact email address and resubmit the token application, so I followed it, but I haven't received any reply in 2 business days. Is there any way to see the progress of review? Or every applicant can't know the progress until their token would approved or disapproved? I don't even know that my token application successfully submitted or not. Regards, Yogis MCCID: 868-027-2051 -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Performance data by language
Hi, Is it possible to get performance data by language via API? I have checked several available report types but not able to find this. Thanks, -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Discrepancies between ad-hoc perf rpts - campaigns
I'm working with bringing in AW ad-hoc reports into our DB for more reporting. The issue i'm seeing is that not all the campaigns are being listed in each report. I am running it with Impressions 0 and not selecting any segments. For example: ad_performance_report will give me ~700 distinct campaigns. keywords_performance_report will give me ~ 500 distinct campaigns. autoplacements_performance_rpt will give me ~ 200 campaigns. What am I missing here? Trying to understand the discrepancies. Thanks -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[Python] ReportDownloader seems to be not working
Hi. I can't use download reports with the Python client. I'm using with adwords-15.9.0 with v201306. It always faild with: headers['Authorization'] = 'Bearer ' + self.access_token TypeError: cannot concatenate 'str' and 'NoneType' objects Example scripts get_report_fields.pyhttps://code.google.com/p/google-api-ads-python/source/browse/trunk/examples/adspygoogle/adwords/v201306/reporting/get_report_fields.py and get_campaign_stats.pyhttps://code.google.com/p/google-api-ads-python/source/browse/trunk/examples/adspygoogle/adwords/v201306/reporting/get_campaign_stats.py work fine but download_criteria_report.pyhttps://code.google.com/p/google-api-ads-python/source/browse/trunk/examples/adspygoogle/adwords/v201306/reporting/download_criteria_report.py and download_criteria_report_with_awql.pyhttps://code.google.com/p/google-api-ads-python/source/browse/trunk/examples/adspygoogle/adwords/v201306/reporting/download_criteria_report_with_awql.py fail with the same error. Any ideas? Thanks, Mike -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
appendRow of null
Hi All, I was using the codes of Russ for the QS account, i wanted to include the variation of cpc too but the codes gives me an apprendRow error. This is my code : //--- // Store Account Level Quality Score in Google Spreadsheet. // Created By: Russ Savage // Based on script originally found at: http://searchengineland.com/how-account-quality-score-can-guide-adwords-optimization-148595 // FreeAdWordsScripts.com //--- function main() { var SPREADSHEET_URL = https://docs.google.com/spreadsheet/ccc?key=0AuBDBGZ7z9xYdDEzMDNxOU5MZVltZ2FTMzladHAtN0E#gid=0;; var ACCOUNT_NAME = 'Account1'; var today = new Date(); var date_str = [today.getFullYear(),(today.getMonth() + 1),today.getDate()].join(-); var spreadsheet = getSpreadsheet(SPREADSHEET_URL); var qs_sheet = spreadsheet.getSheetByName(ACCOUNT_NAME); var kw_iter = AdWordsApp.keywords() .withCondition(Status = ENABLED) .forDateRange(LAST_30_DAYS) .withCondition(Impressions 0) .orderBy(Impressions DESC) .withLimit(5) .get(); var tot_imps_weighted_qs = 0; var tot_imps = 0; var tot_cout = 0; var tot_clics = 0; while(kw_iter.hasNext()) { var kw = kw_iter.next(); var kw_stats = kw.getStatsFor(LAST_30_DAYS); var imps = kw_stats.getImpressions(); var cout = kw_stats.getCost (); var clics = kw_stats.getClicks (); var qs = kw.getQualityScore(); tot_imps_weighted_qs += (qs * imps); tot_imps += imps; tot_cout += cout; tot_clics += clics; } var acct_qs = tot_imps_weighted_qs / tot_imps; var couts = tot_cout; var clicks = tot_clics; qs_sheet.appendRow([date_str,acct_qs,couts,clicks]); function getSpreadsheet(spreadsheetUrl) { var matches = new RegExp('key=([^#]*)').exec(spreadsheetUrl); if (!matches || !matches[1]) { throw 'Invalid spreadsheet URL: ' + spreadsheetUrl; } var spreadsheetId = matches[1]; return SpreadsheetApp.openById(spreadsheetId); } } Someone can help me ? Thanks you ! -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
AdGroupCriterionService Bug? - EntityNotFound.INVALID_ID for CriterionId that exists
Hi All, We're seeing a reproducable issue where we receive an EntityNotFound.INVALID_ID (trigger - CriterionId) error for a mutate operation on AdGroupCriterion using a valid AdGroupId and CriterionId (Id). The AdGroupCriterionService get call returns the AdGroupCriterion object with the same Ids that are being said to be invalid. I have attached the soap logs for the mutate operation and the get operation below. Is this a bug in the AdGroupCriterionService or is there something wrong with our AdGroupCriterionOperation? Thanks! Akil Burgess -BEGIN API CALL- Request (Mutate) --- ?xml version=1.0 encoding=utf-8?soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:xsd=http://www.w3.org/2001/XMLSchema;!--POST /api/adwords/cm/v201306/AdGroupCriterionService User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.18051) VsDebuggerCausalityData: uIDPowA6lARsOPdGukKutxnlLlgANiaXQS2+v0qF1bOWBKYRAyjTf3Fc57dJitdesMIpq6IACQAA Content-Type: text/xml; charset=utf-8 SOAPAction: Host: adwords.google.com Content-Length: 1540 Accept-Encoding: gzip Connection: Keep-Alive TimeStamp: Mon, 22 Jul 2013 12:02:27 GMT --soap:HeaderRequestHeader xmlns=https://adwords.google.com/api/adwords/cm/v201306;authToken xmlns=https://adwords.google.com/api/adwords/cm/v201306;**/authTokendeveloperToken xmlns=https://adwords.google.com/api/adwords/cm/v201306;**/developerTokenclientCustomerId xmlns=https://adwords.google.com/api/adwords/cm/v201306;9765518125/clientCustomerIduserAgent xmlns=https://adwords.google.com/api/adwords/cm/v201306; (AwApi-DotNet/16.1.0, Common-Dotnet/1.8.0, .NET CLR/4.0.30319.18051, gzip)/userAgent/RequestHeader/soap:Headersoap:Bodymutate xmlns=https://adwords.google.com/api/adwords/cm/v201306;operationsoperatorSET/operatoroperand xsi:type=BiddableAdGroupCriterionadGroupId3790202104/adGroupIdcriterion xsi:type=Keywordid37523985304/id/criterionbiddingStrategyConfigurationbids xsi:type=CpcBidbidmicroAmount80/microAmount/bid/bids/biddingStrategyConfiguration/operand/operations/mutate/soap:Body/soap:Envelope Response (Mutate) soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/;!--Content-Encoding: X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block Content-Length: 535 Cache-Control: private, max-age=0 Content-Type: text/xml; charset=UTF-8 Date: Mon, 22 Jul 2013 11:01:16 GMT Expires: Mon, 22 Jul 2013 11:01:16 GMT Server: GSE TimeStamp: Mon, 22 Jul 2013 12:02:27 GMT --soap:HeaderResponseHeader xmlns=https://adwords.google.com/api/adwords/cm/v201306;requestId0004e2179870ad280ae50e884419/requestIdserviceNameAdGroupCriterionService/serviceNamemethodNamemutate/methodNameoperations0/operationsresponseTime478/responseTime/ResponseHeader/soap:Headersoap:Bodysoap:Faultfaultcodesoap:Server/faultcodefaultstring[EntityNotFound.INVALID_ID @ operations[0].operand.criterion.id; trigger:'CriterionId{id=37523985304}']/faultstringdetailApiExceptionFault xmlns=https://adwords.google.com/api/adwords/cm/v201306;message[EntityNotFound.INVALID_ID @ operations[0].operand.criterion.id; trigger:'CriterionId{id=37523985304}']/messageApplicationException.TypeApiException/ApplicationException.Typeerrors xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xsi:type=EntityNotFoundfieldPathoperations[0].operand.criterion.id/fieldPathtriggerCriterionId{id=37523985304}/triggererrorStringEntityNotFound.INVALID_ID/errorStringApiError.TypeEntityNotFound/ApiError.TypereasonINVALID_ID/reason/errors/ApiExceptionFault/detail/soap:Fault/soap:Body/soap:Envelope -END API CALL--- -BEGIN API CALL- Request (Get) --- ?xml version=1.0 encoding=utf-8?soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:xsd=http://www.w3.org/2001/XMLSchema;!--POST /api/adwords/cm/v201306/AdGroupCriterionService User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.18051) VsDebuggerCausalityData: uIDPo3bOCEf8qJROof0bhcA1TDcAT2HD25jDzUGnU2As9HdxCUHJYPMJGZBCiWlffLMJkWEACQAA Content-Type: text/xml; charset=utf-8 SOAPAction: Host: adwords.google.com Content-Length: 2621 Accept-Encoding: gzip Connection: Keep-Alive TimeStamp: Mon, 22 Jul 2013 12:03:30 GMT --soap:HeaderRequestHeader xmlns=https://adwords.google.com/api/adwords/cm/v201306;authToken xmlns=https://adwords.google.com/api/adwords/cm/v201306;**/authTokendeveloperToken xmlns=https://adwords.google.com/api/adwords/cm/v201306;**/developerTokenclientCustomerId xmlns=https://adwords.google.com/api/adwords/cm/v201306;9765518125/clientCustomerIduserAgent xmlns=https://adwords.google.com/api/adwords/cm/v201306; (AwApi-DotNet/16.1.0,
Re: Default Max. CPC for adgroup
Hi Roberto, The content from this topic is no longer relevant to all current versions of the API, as it was last posted to in 2011. For general information about bidding, please see the bidding guidehttps://developers.google.com/adwords/api/docs/guides/biddingin our docs. The previously named MaxCpc is now exposed as CpcBid.bidhttps://developers.google.com/adwords/api/docs/reference/latest/CampaignService.CpcBid?hl=en#bidin the latest version of the API. For example code on setting the bidding strategy, each library ships with an add ad group example, which contains the relevant code. Here is a link to the java AddAdGroups.java examplehttps://code.google.com/p/google-api-ads-java/source/browse/examples/adwords_axis/src/main/java/adwords/axis/v201306/basicoperations/AddAdGroups.java . Regards, - Paul, AdWords API Team. -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
ReportDefinitionError.CUSTOMER_SERVING_TYPE_REPORT_MISMATCHselector
Hello All I am trying to download Report Using Google adwords api. When I Run to the below given code it gives me error ReportDefinitionError.CUSTOMER_SERVING_TYPE_REPORT_MISMATCHselector Please Help me. using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Diagnostics; using System.Net; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } public bool DownloadReportDefinition(string reportDefinitionXml, string authToken, string clientCustomerId, string developerToken, string filePath, bool downloadInMicros) { Uri downloadUrl = new Uri(https://adwords.google.com/api/adwords/reportdownload/v201306;); WebRequest request = HttpWebRequest.Create(downloadUrl); request.Headers.Add(clientCustomerId: + clientCustomerId); request.Headers.Add(developerToken: + developerToken); request.Headers.Add(Authorization: GoogleLogin auth= + authToken); request.Headers.Add(returnMoneyInMicros: + downloadInMicros.ToString().ToLower()); request.Method = POST; request.ContentType = application/x-www-form-urlencoded; using (StreamWriter writer = new StreamWriter(request.GetRequestStream())) { writer.Write(__rdxml= + HttpUtility.UrlEncode(reportDefinitionXml)); } WebResponse response = null; bool success = false; try { response = request.GetResponse(); success = true; } catch (WebException ex) { // The server will return an error code other than 200 if something goes wrong. The actual reason for // failure can be found by reading the response. response = ex.Response; } DownloadReportToFile(filePath, response); return success; } private static void DownloadReportToFile(string filePath, WebResponse response) { FileStream outputStream = File.Create(filePath); using (Stream responseStream = response.GetResponseStream()) { CopyStream(responseStream, outputStream); } outputStream.Close(); } private static void CopyStream(Stream sourceStream, Stream targetStream) { int bufferSize = 2 20; byte[] buffer = new byte[bufferSize]; int bytesRead = 0; while ((bytesRead = sourceStream.Read(buffer, 0, bufferSize)) != 0) { targetStream.Write(buffer, 0, bytesRead); } } protected void btnDownloadRepot_Click(object sender, EventArgs e) { // string reportDefination = ; reportDefination = reportDefinition; reportDefination = reportDefination + selector; reportDefination = reportDefination + fieldsId/fields; reportDefination = reportDefination + fieldsDate/fields; reportDefination = reportDefination + fieldsAdGroupId/fields; reportDefination = reportDefination + fieldsImpressions/fields; reportDefination = reportDefination + fieldsClicks/fields; reportDefination = reportDefination + fieldsCost/fields; reportDefination = reportDefination + fieldsConversions/fields; reportDefination = reportDefination + fieldsConversionValue/fields; reportDefination = reportDefination + fieldsAveragePosition/fields; reportDefination = reportDefination + dateRange; reportDefination = reportDefination + min20130701/min; reportDefination = reportDefination + max20130718/max; reportDefination = reportDefination + /dateRange; reportDefination = reportDefination + /selector; reportDefination = reportDefination + reportNameAD PERFORMANCE REPORT/reportName; reportDefination = reportDefination + reportTypeAD_PERFORMANCE_REPORT/reportType; reportDefination = reportDefination + dateRangeTypeCUSTOM_DATE/dateRangeType; reportDefination = reportDefination + downloadFormatXML/downloadFormat; reportDefination = reportDefination + /reportDefinition; string authetoken = ; authetoken = xyz; DownloadReportDefinition(reportDefination, authetoken, 123, abc, C:\\Users\\deepak.singh\\Documents, true); } } Thanks Warm Regards Deepak Singh -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at
Re: [7-4674000001128] Re: Placements date from the API doesn't match with the real data
Hi Paul, Anything new? please advise, Regards Shay. Smart Media Ltd. 2013/6/10 adwords-api@googlegroups.com Hi Shay, My apologies for the delay in response. I'm looking into the requests made by your account and the numbers being returned. I'll get back to you as soon as I have more information. Regards, - Paul, AdWords API Team. =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://googleadsdeveloper.blogspot.com/search/label/adwords_api https://developers.google.com/adwords/api/community/ =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ On 06/04/13 07:04:18 s...@smedia.co.il wrote: some details: AdWords API v201302 Developer token: yxokggajv4gopNWc2Bj4Kw Client: *Hopy NIS* ( Client ID: 319-879-8061 ) Campaign: *template cpm russia* ( ID: 119677335 ) AdGroup: *special placements combo* ( ID: 5496375735 ) running this simple code: ?php require_once 'init.php'; function GetPlacementsEx(AdWordsUser $user, $adGroupId) { $placements = array(); $adGroupCriterionService = $user-GetService('**AdGroupCriterionService', ADWORDS_VERSION); $selector = new Selector(); $selector-fields = array('PlacementUrl', 'Id', 'Status', 'Impressions'); $selector-ordering[] = new OrderBy('Id', 'ASCENDING'); $selector-predicates[] = new Predicate('AdGroupId', 'IN', is_array($adGroupId) ? $adGroupId : array($adGroupId)); $selector-predicates[] = new Predicate('CriteriaType', 'IN', array('PLACEMENT')); $page = $adGroupCriterionService-get(**$selector); if (isset($page-entries)) foreach ($page-entries as $adGroupCriterion) $placements[$adGroupCriterion-**criterion-id] = array($adGroupCriterion-**criterion-url, $adGroupCriterion-userStatus, $adGroupCriterion-stats-**impressions); return $placements; } try { $user = new AdWordsUser(); //$user-LogAll(); $ag_id = array(5496375735); $adGroupCriterion = GetPlacementsEx($user, $ag_id); foreach ($adGroupCriterion as $agc_id = $agc_details) printf(\t\tActive placement with URL '%s' and id '%s' was found. status:'%s' impr:'%s'\n, $agc_details[0], $agc_id, $agc_details[1], $agc_details[2]); } catch (Exception $e) { printf(An error has occurred: %s\n, $e-getMessage()); } ? I get 4692 results while google's campaign manager give's me 4706 results (lets call it `acceptable loss`). And the placements details are very inaccurate. for example: placement game01.ru ( 16203767823 ) has 351,678 impressions, and from the API I get 1090. [image: תמונה מוטבעת 1] this is one example out of *most *of the results. Please contact me with a solution. thanks, Shay. 2013/6/3 Paul Matthews (AdWords API Team) adwordsapiadvisor+paul@** google.com Hi There, Is there any chance you could email us an example SOAP Request / Response, and what numbers you expect to see in it, so we can investigate this further. Regards, - Paul, AdWords API Team. On Thursday, 30 May 2013 10:44:22 UTC-4, sh...@smedia.co.il wrote: Hi. I wrote a code to pause all placements that has Ctr less than 2.5% and more than 200 impressions. The problem is that the data I recieve from the API is by far inacurate (I see 100 impressions for a placement with 30 impressions). I made a lot of tests and I came to a conclusion that the problem is not on my side. Code example: ?php require_once 'init.php'; function GetCampaignsEx(AdWordsUser $user) { $campaigns = array(); $campaignService = $user-GetService('**CampaignSer**vice', ADWORDS_VERSION); $selector = new Selector(); $selector-fields = array('Id', 'Name'); $selector-ordering[] = new OrderBy('Id', 'ASCENDING'); $selector-predicates[] = new Predicate('Name', 'CONTAINS_IGNORE_CASE', 'cpm'); $selector-predicates[] = new Predicate('Status', 'IN', array('ACTIVE')); $page = $campaignService-get($**selecto**r); if (isset($page-entries)) foreach ($page-entries as $campaign) $campaigns[$campaign-id] = $campaign-name; return $campaigns; } function GetAdGroupsEx(AdWordsUser $user, $campaignId) { $adGroups = array(); $adGroupService = $user-GetService('**AdGroupServ**ice', ADWORDS_VERSION); $selector = new Selector(); $selector-fields = array('Id', 'Name'); $selector-ordering[] = new OrderBy('Id', 'ASCENDING'); $selector-predicates[] = new Predicate('CampaignId', 'IN', array($campaignId)); $selector-predicates[] = new Predicate('Status', 'IN', array('ENABLED')); $page = $adGroupService-get($**selector**); foreach ($page-entries as $adGroup) $adGroups[$adGroup-id] = $adGroup-name; return $adGroups; } function GetPlacementsEx(AdWordsUser $user, $adGroupId) { $placements = array(); $adGroupCriterionService = $user-GetService('**AdGroupCrit**erionService', ADWORDS_VERSION); $selector = new Selector(); $dateRange = new DateRange(); $selector-fields = array('PlacementUrl', 'Id', 'Status', 'Impressions'); $selector-ordering[] = new OrderBy('Id', 'ASCENDING'); $selector-predicates[] =
Downloading file for keywords with an error
I have tested new Keyword tool. When I download it is an error as CSV file includes wrong format of cell like Competition. It will result Date... Need help. -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: How do I get Criteria by CriteriaId?
Hi David, So there is no way to get criteria by IDs? Please consider including this in future API upgrades. Cheers, Aradhya On Friday, 19 July 2013 02:22:03 UTC+5:30, David Torres (AdWords API Team) wrote: Hi Aradhya, We don't keep record of deleted campaign criteria, that is why there are not visible to the CampaignCriterionService. Best, - David On Wednesday, July 17, 2013 2:57:37 AM UTC-4, aradhyat...@gmail.com wrote: Hi David, I have deleted CriterionID 21176 from CampaignID 133529824. Thanks, Aradhya. On Wednesday, July 17, 2013 2:02:57 AM UTC+5:30, David Torres (AdWords API Team) wrote: Hi Aradhya, What kind of campaign criteria are you trying to retrieve? can you give me a campaign ID as example? Best, - David On Monday, July 15, 2013 8:41:22 AM UTC-4, aradhyat...@gmail.com wrote: Hi David, I am getting this error when I tried what you suggested: SelectorError.INVALID_PREDICATE_FIELD_NAME @ serviceSelector; trigger:'Status' I expected this would happen as there is no such field mentioned here: https://developers.google.com/adwords/api/docs/appendix/selectorfields#v201302-CampaignCriterionService Also, where can I get a list of all the possible statuses? Thanks, Aradhya On Saturday, July 13, 2013 2:13:55 AM UTC+5:30, David Torres (AdWords API Team) wrote: Hi Aradhya, For deleted criteria you also have to specific a predicate such as Status IN ['DELETED']. By default deleted criteria is not returned by the services. Best, - David Torres - AdWords API Team On Friday, July 12, 2013 2:11:35 AM UTC-4, aradhyat...@gmail.comwrote: Hi, I am using *CustomerSyncService *to get the ids of the criteria that have been added or deleted during a time period. Now, I need the corresponding criterion objects from the ids.How do I accomplish this? I tried using *CampaignCriterionService *and passing the CampaignIds and CriteriaIds as the predicates, *but I do not get the deleted criteria objects*. I looked into *ConstantDataService*, but it returns all criterias, and there is no provision to filter by Ids. Thanks, Aradhya -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Does Keyword Performance Report contain statistics of upgraded sitelinks?
Hello, does the Keyword Performance Report also contain keyfigures of upgraded sitelinks? Or do we need to query the Placeholder Feed Item Performance Report for keyfigures of upgraded sitelinks? Thank you :-) Andreas B. -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Can't reuse oauth2 token - gives me OAUTH_TOKEN_INVALID (Ruby client lib)
Hi Matthew, The Ruby OAuth2 infohttps://code.google.com/p/google-api-ads-ruby/wiki/OAuth2 along with the READMEhttps://code.google.com/p/google-api-ads-ruby/source/browse/adwords_api/README#31 should explain all the steps for configuring your client. But it's worth testing the setup_oauth2.rb examplehttps://code.google.com/p/google-api-ads-ruby/source/browse/adwords_api/examples/v201306/misc/setup_oauth2.rb, to see if that resolves the issue. Finally, if you're receiving a token, but when used it responds with OAUTH_TOKEN_INVALID, we recommend checking your token with the tokeninfo servicehttps://developers.google.com/accounts/docs/OAuth2Login#validatinganidtoken. Once you've received a token response, you can send it to the tokeninfo service, for information on the token. See below for an example. https://www.googleapis.com/oauth2/v1/tokeninfo?id_token=*TOKEN HERE*https://www.googleapis.com/oauth2/v1/tokeninfo?id_token= . Regards, - Paul, AdWords API Team. -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
ORDER BY Clicks DESC Returns INVALID_ORDER_BY_CLAUSE - Bug
Hi guys, there seems to be a bug regarding the Reporting AWQL endpoint. What steps will reproduce the problem? Run query: SELECT Query, MatchType, Clicks, Cost, Impressions FROM SEARCH_QUERY_PERFORMANCE_REPORT DURING 20130621,20130721 ORDER BY Clicks DESC Query without ORDER BY Clicks DESC works all OK. Please can you advise. P.S. Initially I have reported it here - https://code.google.com/p/google-api-adwords-php/issues/detail?id=103 but been asked to move it under this forum. -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Experiments (ACE) for adcopies: 'get' method doesn't seem to work for ExperimentDeltaStatus and ExperimentDataStatus
*** Outgoing SOAP ** ?xml version='1.0' encoding='UTF-8'? ns0:Envelope xmlns:ns0=http://schemas.xmlsoap.org/soap/envelope/; xmlns:ns1=https://adwords.google.com/api/adwords/cm/v201302; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; ns0:encodingStyle=http://schemas.xmlsoap.org/soap/encoding/; ns0:Header . ns0:Body ns1:get ns1:serviceSelector xsi:type=cm:Selector ns1:fieldsId/ns1:fields ns1:fieldsAdGroupId/ns1:fields ns1:fieldsHeadline/ns1:fields ns1:fieldsDescription1/ns1:fields ns1:fieldsDescription2/ns1:fields ns1:fieldsDisplayUrl/ns1:fields ns1:fieldsUrl/ns1:fields ns1:fieldsExperimentDeltaStatus/ns1:fields ns1:predicates xsi:type=cm:Predicate ns1:fieldAdGroupId/ns1:field ns1:operatorIN/ns1:operator ns1:values11350788328/ns1:values /ns1:predicates ns1:predicates xsi:type=cm:Predicate ns1:fieldStatus/ns1:field ns1:operatorIN/ns1:operator ns1:valuesENABLED/ns1:values ns1:valuesPAUSED/ns1:values /ns1:predicates ns1:paging xsi:type=cm:Paging ns1:startIndex0/ns1:startIndex ns1:numberResults5000/ns1:numberResults /ns1:paging /ns1:serviceSelector /ns1:get /ns0:Body /ns0:Envelope *** Incoming HTTP headers ** HTTP/1.? 200 OK Content-Type: text/xml; charset=UTF-8 Content-Encoding: gzip Date: Mon, 22 Jul 2013 10:40:13 GMT Expires: Mon, 22 Jul 2013 10:40:13 GMT Cache-Control: private, max-age=0 X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block Server: GSE *** Incoming SOAP ** ?xml version='1.0' encoding='UTF-8'? ns0:Envelope xmlns:ns0=http://schemas.xmlsoap.org/soap/envelope/; xmlns:ns1=https://adwords.google.com/api/adwords/cm/v201302; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; ns0:Header ns1:ResponseHeader ns1:requestId0004e2174d1af4a00ae5688940f3/ns1:requestId ns1:serviceNameAdGroupAdService/ns1:serviceName ns1:methodNameget/ns1:methodName ns1:operations1/ns1:operations ns1:responseTime766/ns1:responseTime ns1:units0/ns1:units /ns1:ResponseHeader /ns0:Header ns0:Body ns1:getResponse ns1:rval ns1:totalNumEntries660/ns1:totalNumEntries ns1:Page.TypeAdGroupAdPage/ns1:Page.Type ns1:adGroupId11350788328/ns1:adGroupId ns1:ad xsi:type=TextAd ns1:id42267946288/ns1:id ns1:urlhttp://www.wimdu.se/?v=2/ns1:url ns1:displayUrlwww.Wimdu.se/London_hostels/ns1:displayUrl ns1:Ad.TypeTextAd/ns1:Ad.Type ns1:headlineLondon prisvärda hostels/ns1:headline ns1:description1Book hostels från 160 kr/n/ns1:description1 ns1:description2Enkelt och säkert online bokning/ns1:description2 /ns1:ad ns1:statusENABLED/ns1:status ns1:approvalStatusFAMILY_SAFE/ns1:approvalStatus ns1:trademarkDisapprovedfalse/ns1:trademarkDisapproved ns1:stats ns1:networkSEARCH/ns1:network ns1:Stats.TypeAdStats/ns1:Stats.Type ns1:percentServed0.0/ns1:percentServed /ns1:stats /ns1:entries ns1:entries ns1:adGroupId11350788328/ns1:adGroupId ns1:ad xsi:type=TextAd ns1:id42267946408/ns1:id ns1:urlhttp://www.wimdu.se/?v=2/ns1:url ns1:displayUrlwww.Wimdu.se/London_hostels/ns1:displayUrl ns1:Ad.TypeTextAd/ns1:Ad.Type ns1:headlineLondon prisvärda hostels/ns1:headline ns1:description1Boka kort resa till London/ns1:description1 ns1:description2Wimdu™ Helt enkelt bättre än hotell/ns1:description2 /ns1:ad ns1:statusENABLED/ns1:status ns1:approvalStatusFAMILY_SAFE/ns1:approvalStatus ns1:trademarkDisapprovedfalse/ns1:trademarkDisapproved ns1:stats ns1:networkSEARCH/ns1:network ns1:Stats.TypeAdStats/ns1:Stats.Type ns1:percentServed0.0/ns1:percentServed /ns1:stats /ns1:entries /ns1:rval /ns1:getResponse /ns0:Body /ns0:Envelope EndTime: 2013-07-22 12:40:14 On Friday, 19 July 2013 17:02:40 UTC+2, David Torres (AdWords API Team) wrote: Hi Francesco, Could you please post a sanitized sample of your SOAP logs? or just the requestId will suffice. Best, - David Torres - AdWords API Team On Tuesday, July 16, 2013 11:38:01 AM UTC-4, Francesco Della Vedova wrote: hello, i'm trying to set up my application to run experiments. After setting up the experiment at campaign level, I try to get the ExperimentDeltaStatus of the adcopies, that I assume to be modified (or on adwords online, 'control and experiment'). But the field seems to always be empty...I added the right field to the selector, but nothing appears in the results. Even after manually setting ads to
Re: Can't reuse oauth2 token - gives me OAUTH_TOKEN_INVALID (Ruby client lib)
I was finally able to get it working. I had to merge my stored token values with the loaded config params from the adwords_api.yml file. Trying to figure out how to set the token after the api object was created was causing issues. I used the setup_oauth2.rb example to write the values to my config and removed the token information. I'm storing that data in the db and load when I need to use it.: config = File.join( Rails.root, 'config', 'adwords_api.yml' ) config_data = YAML::load_file( config ) config_data[:authentication].merge!({ :oauth2_token = { :chunking = true, :access_token = self.access_token, :refresh_token = self.refresh_token, :issued_at = self.expires_at - 3600, :expires_in = 3600 } }) @api = AdwordsApi::Api.new( config_data ) -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
OAuth2 autorization x Adwords API
Hi, I'm writing the autentication code for work with adwords api. I read the official guide: https://code.google.com/p/google-api-ads-java/source/browse/examples/adwords_axis/README // Get an OAuth2 credential. Credential credential = new OfflineCredentials.Builder() .forApi(OfflineCredentials.Api.AdWords) .withClientSecrets(clientId, clientSecret) .withRefreshToken(refreshToken) .build() .generateCredential(); // Construct an AdWordsSession. AdWordsSession session = new AdWordsSession.Builder() .withDeveloperToken(developerToken) // ... .withOAuth2Credential(credential) .build(); I generated clientId and clientSecret, but refreshToken? How calculate it? Thanks for your help -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Getting Error The SoapListenerExtension class is not loaded. The most possible cause for this error is that you haven't registered Google.Api.Ads.Common.Lib.SoapListenerExtension as a soap extensi
Hi Jonathan, Most likely this is a assembly binding issue, could you run fuslogvw.exe and see if that's the case? http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.71).aspx Cheers, Anash On Friday, July 19, 2013 4:42:12 AM UTC+5:30, Jonathan Shaltz wrote: What else might be necessary? My app runs on my local machine but not on any of several servers, though I have full admin rights there. The error message turns up little in search results, beyond this very forum and a few nearly-identical versions: The SoapListenerExtension class is not loaded. The most possible cause for this error is that you haven't registered Google.Api.Ads.Common.Lib.SoapListenerExtension as a soap extension under configuration/system.web/webServices/soapExtensionTypes in your your App.config or Web.config. See the sample App.config for details on how to register soap extensions. Here's what I have in my app.config: ?xml version=1.0? configuration configSections sectionGroup name=userSettings type=System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 section name=AdWords.Extractor.Properties.Settings type=System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 allowExeDefinition=MachineToLocalUser requirePermission=false / /sectionGroup /configSections connectionStrings.../connectionStrings userSettings.../userSettings system.web webServices soapExtensionTypes add type=Google.Api.Ads.Common.Lib.SoapListenerExtension, Google.Ads.Common, Version=1.4.0.0, Culture=neutral, PublicKeyToken=52807268f2b614dc priority=1 group=0/ /soapExtensionTypes /webServices /system.web startupsupportedRuntime version=v4.0 sku=.NETFramework,Version=v4.0//startup /configuration On Friday, April 6, 2012 7:56:41 AM UTC-5, David Torres wrote: Hi, Make sure you have this line in your App.config or Web.config add type=Google.Api.Ads.Common.Lib.SoapListenerExtension, Google.Ads.Common priority=1 group=0/ Did you just migrated to version = 14.0.0? Best, -David Torres - AdWords API Team On Tuesday, April 3, 2012 1:09:49 AM UTC-4, Pramod Patil wrote: Hi I am using newer version of Google.Api.Ads.AdWords.v201109. but I am getting error on red code line . would you please help to resolve this. Error : T*he SoapListenerExtension class is not loaded. The most possible cause for this error is that you haven't registered Google.Api.Ads.Common.Lib.SoapListenerExtension as a soap extension under configuration/system.web/webServices/soapExtensionTypes in your your App.config or Web.config.* Below is my code. Imports Google.Api.Ads.AdWords.Lib Imports Google.Api.Ads.AdWords.v13 Imports Google.Api.Ads.AdWords.v201109 Public Function getUser() As AdWordsUser Dim headers As New Dictionary(Of String, String) Dim SearchEngineDBObj As New SearchEngineDB(SQLConn) Dim SearchEngineObj As SearchEngine Dim emailObj As New FusionLibrary.Fusion.Campaign.eMail(192.168.2.205) SearchEngineObj = SearchEngineDBObj.populate(Google) If SearchEngineObj Is Nothing Then SearchID = 0 Return Nothing End If SearchID = SearchEngineObj.SearchID headers.Add(email, X) headers.Add(password, ) headers.Add(useragent, X) headers.Add(developerToken, XX) headers.Add(applicationToken, XX) headers.Add(clientCustomerId, XX 'headers.Add(AuthorizationMethod, ClientLogin) Try Dim AdWordsUserObj As New AdWordsUser(headers) Return AdWordsUserObj Catch ex As Exception Return Nothing End Try End Function Public Function updateCampaigns() As Integer Dim user As AdWordsUser user = getUser() If user Is Nothing Then Return 0 End If Dim CampaignServiceObj As CampaignService Dim page As CampaignPage Dim SearchEngineeCampaignDBObj As New SearchEngineCampaignDB(SQLConn) Dim secObj As SearchEngineCampaign Dim rtn As String CampaignServiceObj = user.GetService(AdWordsService.v201109.CampaignService) Try Dim selector As New Selector() selector.fields = New String() {Id, Name, Status} Dim orderByName As New OrderBy() orderByName.field = Name orderByName.sortOrder = SortOrder.ASCENDING Dim emailObj As New FusionLibrary.Fusion.Campaign.eMail(XX) Dim SearchEngineDBObj As New SearchEngineDB(SQLConn) Dim
dateRangeType = 'LAST_7_DAYS'; not working correctly - Downloading report on july 22 not giving july 21 data
I'm using the dataRangeType of LAST_7_DAYS, which started malfunctioning today. (The same script I ran today did not give me results for yesterday. When I ran it last week, it did give me results for 'yesterday'.) In other words, the following test script, when run on July 22, does not include data for July 21, but for July 15-July 24. The test script is: ?php $customerId = PUT CUSTOMER ID HERE; error_reporting(E_STRICT | E_ALL); $path = $adwordsAPIpath; set_include_path(get_include_path() . PATH_SEPARATOR . $path); include('init.php'); require_once UTIL_PATH . '/ReportUtils.php'; // Get AdWordsUser from credentials in ../auth.ini // relative to the AdWordsUser.php file's directory. $user = new AdWordsUser(); $user-GetAuthToken(); //get the token now; this should force php not to fetch the token for each fork() // Log SOAP XML request and response. $user-LogDefaults(); // Load ReportDefinitionService so that the required classes are available. $user-LoadService('ReportDefinitionService', $adwordsVersion); // Create selector. $selector = new Selector(); $selector-fields = array('ExternalCustomerId', 'AccountDescriptiveName', 'PrimaryUserLogin', 'Date', 'AdNetworkType2', 'ValuePerConversion', 'AveragePosition', 'AverageCpc', 'AverageCpm', 'Ctr', 'CampaignName', 'CampaignId', 'Status', 'Clicks', 'AccountTimeZoneId', 'ConversionRate', 'Conversions', 'Cost', 'CostPerConversion', 'CostPerConversionManyPerClick', 'Amount', 'Impressions', 'InvalidClicks', 'InvalidClickRate', 'TotalConvValue', 'ConversionsManyPerClick', 'SearchExactMatchImpressionShare', 'SearchImpressionShare', 'SearchBudgetLostImpressionShare', 'ContentRankLostImpressionShare'); $selector-predicates[] = new Predicate('Status', 'IN', array('ACTIVE', 'DELETED', 'PAUSED')); // Create report definition. $reportDefinition = new ReportDefinition(); $reportDefinition-selector = $selector; $reportDefinition-reportName = 'CAMPAIGN performance report #' . time(); $reportDefinition-dateRangeType = 'LAST_7_DAYS'; $reportDefinition-reportType = 'CAMPAIGN_PERFORMANCE_REPORT'; $reportDefinition-downloadFormat = 'CSV'; $reportDefinition-includeZeroImpressions = FALSE; $options = array('version' = $adwordsVersion, 'returnMoneyInMicros' = FALSE); try { $fileName = Complex-.$customerId..csv; $path = dirname(__FILE__) . '/test/' . $fileName; $user-SetClientCustomerId($customerId); ReportUtils::DownloadReport($reportDefinition, $path, $user, $options ); printf(Report with name '%s' was downloaded to '%s'.\n, $reportDefinition-reportName, $fileName); } catch (Exception $e) { print $e-getMessage() . adwordsId - $customerId \n; } -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Push Campaign / Ads / Keywords using SSIS
I am creating a solution for an e-commerce company where we can run an overnight process to push new campaigns / ads and update / pause others depending on new items that come in or go out of stock. We want a hands-off solution where the API can be called automatically from our SQL 2008 server. I have read a couple of posts where this has been done, but there is no real documentation on this. The idea I had was to compile the API interface project to run as an EXE or Service on the sql server. The SSIS job would run in two phases: Phase 1: Renew the campaign / Ad data in our database using a dedicated stored procedure. Phase 2: Run the API EXE and loop through each campaign in the table created in (1) and batch push all ads / keywords for that campaign to Adwords account. If we encounter an item out of stock then use the API to pause that item (if that's possible through API). Phase 3: Repeat for next campaign in table I did read in the documentation that there is a Service account you can apply for. Is this service account required for such an application? We have already registered for and received the standard API token. Thanks in advance, Jason Lorenti CopierSupplyStore -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: OAUTH_TOKEN_INVALID ruby client
Thanks I would like to know the correct way to do this. I have not found an example the uses a refresh token that is stored in a db. I have seen the setup_oauth2.rb example where the refresh token is written to a file. Creating a new AdwordsApi::Api with the yml file and setting credentials does not seem to work. On Monday, July 22, 2013 2:13:02 AM UTC-4, Takeshi Hagikura (AdWords API Team) wrote: Hi Matthew, Looks like the access_token (it expires in one hour) was issued at 2013-07-19 14:56:06 -0400. So at the time you made a request, the access token seemed to expire. If you make the oauth token request in offline mode, the response should contain refresh_token (that never expires). Using that you can get a new access toke if the existing access token is about to expire. I'm asking the ruby library maintainer on how to make a offline oauth token request in more detail. Best, - Takeshi, AdWords API Team On Saturday, July 20, 2013 4:01:13 AM UTC+9, Matthew Ledom wrote: I keep receiving this error when I try to use a service. In this instance I'm use the campaign service. I had everything working with ClientLogin and found that Reports are only supported with OAUTH2 so I'm trying to get that implemented. I have setup my app to retrieve a offline token via the browser redirect work flow. I have also setup my adword model to request a new access token using the provided refresh token from the previous step. I can take that token and use it in the following code: api.authorize(:oauth2_token = token ) where token: {access_token=ya29.AxxxXh6zvQ, token_type=Bearer, expires_in=3600, id_token= eyJhbxxxB3MO4} this returns: {:access_token=ya29.AHEJXh6zvQ, :refresh_token=nil, :issued_at=2013-07-19 14:56:06 -0400, :expires_in=3600, :id_token= eyJhbxxxLB3MO4} When I use this api object to call the campaign service I get the output provided below. The reporting download is the final piece needed to approval and I've searched all over this group and the web and can't find anything that helps. I'm using the latest versions of the ruby gem: google-ads-common (0.9.3) and google-adwords-api (0.9.3) SOAP request: https://adwords.google.com/api/adwords/cm/v201302/CampaignService Accept-Encoding: gzip,deflate, SOAPAction: get, User-Agent: bw_console (AwApi-Ruby/0.9.3, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, curb), Authorization: Bearer ya29.AHxXh6zvQ, Content-Type: text/xml;charset=UTF-8, Content-Length: 837 ?xml version=1.0 encoding=UTF-8?env:Envelope xmlns:xsd= http://www.w3.org/2001/XMLSchema; xmlns:xsi= http://www.w3.org/2001/XMLSchema-instance; xmlns:wsdl= https://adwords.google.com/api/adwords/cm/v201302; xmlns:env= http://schemas.xmlsoap.org/soap/envelope/;env:Headerwsdl:RequestHeader xmlns=https://adwords.google.com/api/adwords/cm/v201302;userAgentconsole (AwApi-Ruby/0.9.3, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, curb)/userAgentdeveloperTokenh6Axxxweg/developerToken/wsdl:RequestHeader/env:Headerenv:Bodyget xmlns=https://adwords.google.com/api/adwords/cm/v201302 serviceSelectorfieldsId/fieldsfieldsName/fieldsfieldsStatus/fieldsorderingfieldName/fieldsortOrderASCENDING/sortOrder/ordering/serviceSelector/get/env:Body/env:Envelope HTTPI executes HTTP POST using the curb adapter SOAP response (status 500): soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/;soap:HeaderResponseHeader xmlns=https://adwords.google.com/api/adwords/cm/v201302;requestId0004e1e1b8b62a800aed881c1a3b/requestIdserviceNameCampaignService/serviceNamemethodNameget/methodNameoperations0/operationsresponseTime23/responseTimeunits0/units/ResponseHeader/soap:Headersoap:Bodysoap:Faultfaultcodesoap:Server/faultcodefaultstring[AuthenticationError.OAUTH_TOKEN_INVALID @ ; trigger:'lt;nullgt;']/faultstringdetailApiExceptionFault xmlns= https://adwords.google.com/api/adwords/cm/v201302;message[AuthenticationError.OAUTH_TOKEN_INVALID @ ; trigger:'lt;nullgt;']/messageApplicationException.TypeApiException/ApplicationException.Typeerrors xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xsi:type=AuthenticationErrorfieldPath/fieldPathtriggerlt;nullgt;/triggererrorStringAuthenticationError.OAUTH_TOKEN_INVALID/errorStringApiError.TypeAuthenticationError/ApiError.TypereasonOAUTH_TOKEN_INVALID/reason/errors/ApiExceptionFault/detail/soap:Fault/soap:Body/soap:Envelope Content-Type: text/xml; charset=UTF-8, Date: Fri, 19 Jul 2013 18:44:49 GMT, Expires: Fri, 19 Jul 2013 18:44:49 GMT, Cache-Control: private, max-age=0, X-Content-Type-Options: nosniff, X-Frame-Options: SAMEORIGIN, X-XSS-Protection: 1; mode=block, Server: GSE, Transfer-Encoding: chunked AdwordsApi::V201302::CampaignService::ApiException: [AuthenticationError.OAUTH_TOKEN_INVALID @ ; trigger:'null'] Thank you to anyone that can help. I really need to get this integration completed. -- --
Help migration Adwords API 201209 to 201306
I'm migrating from API 201209 to 201306 but have a lot of problems: This is my old code try { Boolean mail_flag = false; String clientLoginToken = new ClientLoginTokens(ClientLoginTokens. ADWORDS_SERVICE). from(adwordsPropertyService.getEmail(), adwordsPropertyService.getPassword()); // Construct an AdWordsSession. AdWordsSession session = new AdWordsSession.Builder().withDeveloperToken( adwordsPropertyService.getDeveloperToken()) .withUserAgent(adwordsPropertyService.getUseragent()) .withEndpoint(https:/adwords.google.com/api/adwords/) .withEnvironment(Environment.PRODUCTION) .withClientLoginToken(clientLoginToken).build(); AdWordsServices adWordsServices = new AdWordsServices(); LinkedListCampaignCriterionOperation operations2 = newLinkedListCampaignCriterionOperation(); ListInteger adwordsCode = zonaService.findAdwordsCode(); // Get the ServicedAccountService. ManagedCustomerServiceInterface managedCustomerService = adWordsServices.get(session, ManagedCustomerServiceInterface.class); // Create selector. Selector selector = new Selector(); selector.setFields(new String[]{Login, CustomerId, Name}); // Get results. ManagedCustomerPage page = managedCustomerService.get(selector); for (ManagedCustomer account : page.getEntries()) { logger.info(Client with email +account.getLogin()+ has ID +account.getCustomerId()+.); try{ // Get the CampaignService. session.setClientCustomerId(account.getCustomerId().toString()); CampaignServiceInterface campaignService = adWordsServices.get(session, CampaignServiceInterface.class); // Create selector. Selector selectorCampaign = new Selector(); selectorCampaign.setFields(new String[] {Id, Name, Status}); selectorCampaign.setOrdering(new OrderBy[] {new OrderBy(Name, SortOrder. ASCENDING)}); … … ... First problem is when execute ManagedCustomerServiceInterface managedCustomerService = adWordsServices.get(session, ManagedCustomerServiceInterface.class); that give me follow error: No group found for service: v201306.ManagedCustomerService How can I resolve it? Thanks a lot for your help. Best regards, Marco -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Search funnels report
Hi Alex, I don't have you an update at this moment, but we definitively have it in our mind. Sorry, I just don't have more specifics to share. Best, - David Torres - AdWords API Team On Thursday, July 18, 2013 10:10:42 AM UTC-4, Alex wrote: Hi, are there any plans to implement search funnels in the API? At the Google Adwords API Workshops was said that you try to offer all features from the Adwords Interface in the API. Search funnels are available in the Adwords Interface for some time now, but there is no way to get the data over API. It seems like analytics API (which does return search funnel data) doesnt return any IDs. Hence we can not match the data to Adwords-Data. Am Dienstag, 22. November 2011 21:27:56 UTC+1 schrieb Eric Koleda: Hi, Unfortunately there has been no change, and this data is not exposed via the API. Best, - Eric -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Setting Content Bid Dimension with contentBidCriterionTypeGroup
Hi Takeshi, I guess I was not clear enough (regarding the first question) as it's not exactly what I was asking... Basically, for Display campaigns only, I can specify what bid dimension should be used for particular ad group. Thus, I can set AdGroup.contentBidCriterionTypeGroup = CriterionTypeGroup.PLACEMENT // use placements bids OR AdGroup.contentBidCriterionTypeGroup = CriterionTypeGroup.KEYWORD // use keywords bids OR etc... As you confirmed AdGroup.contentBidCriterionTypeGroup is not mandatory when creating a new group and if it's not provided then Ad Group level default bids are used. However, once AdGroup.contentBidCriterionTypeGroup gets to be set to PLACEMENT/KEYWORD/etc.. there is no way to reset it back to null, so that Ad group level default bids would be used again. I can definitely can do in UI, but (unless I am missing something) it seems like I cannot do it with the API. Thanks, --Alex -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: updating from Cross Client Report Download (ReportUtils::RunAsyncReport) to ReportUtils::DownloadReport
Great, I'm glad it worked for you. I've used pcntl for a few things since. Be careful installing pcntl on a server you share with others, though. A runaway fork can easily take down your whole server. On Monday, June 3, 2013 9:44:19 PM UTC-4, Bill Zhang wrote: Thank you iateadonut. Your solution help us reduce the synchronization time dramatically. From 7~8 hours to within 10 minutes. Best regads, Bill On Friday, December 16, 2011 12:23:44 PM UTC+10, iateadonut wrote: Thanks, I did it with pcntl_fork. (had a lot of different advice on this - yours turned out to be the best) The only problem is that it is consistently triggering Captcha's (except one doing them one at a time, which takes forever). How do I deal with these? Here is the code. I will post it in the other discussion groups where I gave advice pertinent on CrossClient Reports after I complete this taking care of Captcha's. ?php error_reporting(E_STRICT | E_ALL); // You can set the include path to src directory or reference // AdWordsUser.php directly via require_once. // $path = '/path/to/aw_api_php_lib/src'; include('../definedb.php'); // include('./accountsArray.php'); //sets $adwordsAPIpath, uses $selector = new ServicedAccountSelector(); to make an array of all accounts //$accountsArray = array('4503399530'); //print_r($accountsArray);exit; $path = $adwordsAPIpath.'/../../live_api2/src/'; set_include_path(get_include_path() . PATH_SEPARATOR . $path); require_once 'Google/Api/Ads/AdWords/Lib/AdWordsUser.php'; require_once 'Google/Api/Ads/AdWords/Util/ReportUtils.php'; // Get AdWordsUser from credentials in ../auth.ini // relative to the AdWordsUser.php file's directory. $user = new AdWordsUser(); //$user-SetClientId($customerId); // Log SOAP XML request and response. $user-LogDefaults(); // Load ReportDefinitionService so that the required classes are available. $user-LoadService('ReportDefinitionService', 'v201109'); // Create selector. $selector = new Selector(); $selector-fields = array('ExternalCustomerId', 'AccountDescriptiveName', 'PrimaryUserLogin', 'Date', 'Id', 'Name', 'Impressions', 'Clicks', 'Cost'); //$selector-predicates[] = //new Predicate('Status', 'IN', array('ENABLED', 'PAUSED')); // Create report definition. $reportDefinition = new ReportDefinition(); $reportDefinition-selector = $selector; $reportDefinition-reportName = 'Campaign performance report #' . time(); $reportDefinition-dateRangeType = 'LAST_7_DAYS'; $reportDefinition-reportType = 'CAMPAIGN_PERFORMANCE_REPORT'; $reportDefinition-downloadFormat = 'CSV'; $reportDefinition-includeZeroImpressions = FALSE; $options = array('version' = 'v201109', 'returnMoneyInMicros' = FALSE); $pids = array(); $j = 0; for ($i=0; $icount($accountsArray); $i++) { if($j==10) { echo $j. ---\n; $j=0; } $pids[$i] = pcntl_fork(); if(!$pids[$i]) { // child process try { // Get AdWordsUser from credentials in ../auth.ini // relative to the AdWordsUser.php file's directory. $customerId = $accountsArray[$i]; $user-SetClientId($customerId); $fileName = 7days-.$customerId..csv; $path = dirname(__FILE__) . '/../reports/7days/' . $fileName; ReportUtils::DownloadReport($reportDefinition, $path, $user, $options); printf(Report with name '%s' was downloaded to '%s'.\n, $reportDefinition-reportName, $fileName); } catch (Exception $e) { print $e-getMessage(); } exit(); } $j++; } On Dec 15, 9:55 am, Kevin Winter kevin.win...@google.com wrote: Hi, I'm not very familiar with PHP, but I believe one suggested approach is to use pcntl_fork to spawn extra processes and handle multiple concurrent report downloads that way: http://php.net/manual/en/function.pcntl-fork.php - Kevin Winter AdWords API Team On Wednesday, December 14, 2011 11:33:59 PM UTC-5, iateadonut wrote: How do you suggest requesting 10 reports at a time (from an array of 300 customerId's) using php? or is this impossible? On Dec 12, 12:33 pm, Kevin Winter kevin@google.com wrote: Hi, Given that AdHoc reports cost 0 units, the cost of requesting the report to you as a developer is the CPU cycles (and IO) required to request it. The cost to us from a server perspective is a bit more. However, if you as a developer don't know at report time whether or not there is data to request, it makes sense to request it anyway. Yes, go ahead and request the report anyway. - Kevin Winter AdWords API Team -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are
Re: [Python] ReportDownloader seems to be not working
Hi Michael, Thanks for the report. Do you mind filing a issue on the issue trackerhttps://code.google.com/p/google-api-ads-python/issues/list ? Best, - Takeshi, AdWords API Team On Saturday, July 20, 2013 11:54:54 PM UTC+9, Michael Samoylov wrote: Hi. I can't use download reports with the Python client. I'm using with adwords-15.9.0 with v201306. It always faild with: headers['Authorization'] = 'Bearer ' + self.access_token TypeError: cannot concatenate 'str' and 'NoneType' objects Example scripts get_report_fields.pyhttps://code.google.com/p/google-api-ads-python/source/browse/trunk/examples/adspygoogle/adwords/v201306/reporting/get_report_fields.py and get_campaign_stats.pyhttps://code.google.com/p/google-api-ads-python/source/browse/trunk/examples/adspygoogle/adwords/v201306/reporting/get_campaign_stats.py work fine but download_criteria_report.pyhttps://code.google.com/p/google-api-ads-python/source/browse/trunk/examples/adspygoogle/adwords/v201306/reporting/download_criteria_report.py and download_criteria_report_with_awql.pyhttps://code.google.com/p/google-api-ads-python/source/browse/trunk/examples/adspygoogle/adwords/v201306/reporting/download_criteria_report_with_awql.py fail with the same error. Any ideas? Thanks, Mike -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ReportDefinitionError.CUSTOMER_SERVING_TYPE_REPORT_MISMATCHselector
Hi, Please see this common error pagehttps://developers.google.com/adwords/api/docs/common-errors?hl=en#ReportDefinitionError.CUSTOMER_SERVING_TYPE_REPORT_MISMATCH . For the clientCustomerId header, please make sure you are requesting the clientCustomerId for a client account not a MCC account. Best, - Takeshi, AdWords API Team On Saturday, July 20, 2013 5:13:55 PM UTC+9, DEEPAK KUMAR wrote: Hello All I am trying to download Report Using Google adwords api. When I Run to the below given code it gives me error ReportDefinitionError.CUSTOMER_SERVING_TYPE_REPORT_MISMATCHselector Please Help me. using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Diagnostics; using System.Net; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } public bool DownloadReportDefinition(string reportDefinitionXml, string authToken, string clientCustomerId, string developerToken, string filePath, bool downloadInMicros) { Uri downloadUrl = new Uri( https://adwords.google.com/api/adwords/reportdownload/v201306;); WebRequest request = HttpWebRequest.Create(downloadUrl); request.Headers.Add(clientCustomerId: + clientCustomerId); request.Headers.Add(developerToken: + developerToken); request.Headers.Add(Authorization: GoogleLogin auth= + authToken); request.Headers.Add(returnMoneyInMicros: + downloadInMicros.ToString().ToLower()); request.Method = POST; request.ContentType = application/x-www-form-urlencoded; using (StreamWriter writer = new StreamWriter(request.GetRequestStream())) { writer.Write(__rdxml= + HttpUtility.UrlEncode(reportDefinitionXml)); } WebResponse response = null; bool success = false; try { response = request.GetResponse(); success = true; } catch (WebException ex) { // The server will return an error code other than 200 if something goes wrong. The actual reason for // failure can be found by reading the response. response = ex.Response; } DownloadReportToFile(filePath, response); return success; } private static void DownloadReportToFile(string filePath, WebResponse response) { FileStream outputStream = File.Create(filePath); using (Stream responseStream = response.GetResponseStream()) { CopyStream(responseStream, outputStream); } outputStream.Close(); } private static void CopyStream(Stream sourceStream, Stream targetStream) { int bufferSize = 2 20; byte[] buffer = new byte[bufferSize]; int bytesRead = 0; while ((bytesRead = sourceStream.Read(buffer, 0, bufferSize)) != 0) { targetStream.Write(buffer, 0, bytesRead); } } protected void btnDownloadRepot_Click(object sender, EventArgs e) { // string reportDefination = ; reportDefination = reportDefinition; reportDefination = reportDefination + selector; reportDefination = reportDefination + fieldsId/fields; reportDefination = reportDefination + fieldsDate/fields; reportDefination = reportDefination + fieldsAdGroupId/fields; reportDefination = reportDefination + fieldsImpressions/fields; reportDefination = reportDefination + fieldsClicks/fields; reportDefination = reportDefination + fieldsCost/fields; reportDefination = reportDefination + fieldsConversions/fields; reportDefination = reportDefination + fieldsConversionValue/fields; reportDefination = reportDefination + fieldsAveragePosition/fields; reportDefination = reportDefination + dateRange; reportDefination = reportDefination + min20130701/min; reportDefination = reportDefination + max20130718/max; reportDefination = reportDefination + /dateRange; reportDefination = reportDefination + /selector; reportDefination = reportDefination + reportNameAD PERFORMANCE REPORT/reportName; reportDefination = reportDefination + reportTypeAD_PERFORMANCE_REPORT/reportType; reportDefination = reportDefination + dateRangeTypeCUSTOM_DATE/dateRangeType; reportDefination = reportDefination + downloadFormatXML/downloadFormat; reportDefination = reportDefination + /reportDefinition; string authetoken = ; authetoken = xyz; DownloadReportDefinition(reportDefination, authetoken, 123, abc, C:\\Users\\deepak.singh\\Documents, true); } } Thanks Warm Regards Deepak Singh -- --
Re: OAUTH_TOKEN_INVALID ruby client
Hi, Looks like you are already talking with the ruby library maintainer in another mail thread. Please update the thread about it. Best, - Takeshi, AdWords API Team On Tuesday, July 23, 2013 2:53:29 AM UTC+9, Matthew Ledom wrote: Thanks I would like to know the correct way to do this. I have not found an example the uses a refresh token that is stored in a db. I have seen the setup_oauth2.rb example where the refresh token is written to a file. Creating a new AdwordsApi::Api with the yml file and setting credentials does not seem to work. On Monday, July 22, 2013 2:13:02 AM UTC-4, Takeshi Hagikura (AdWords API Team) wrote: Hi Matthew, Looks like the access_token (it expires in one hour) was issued at 2013-07-19 14:56:06 -0400. So at the time you made a request, the access token seemed to expire. If you make the oauth token request in offline mode, the response should contain refresh_token (that never expires). Using that you can get a new access toke if the existing access token is about to expire. I'm asking the ruby library maintainer on how to make a offline oauth token request in more detail. Best, - Takeshi, AdWords API Team On Saturday, July 20, 2013 4:01:13 AM UTC+9, Matthew Ledom wrote: I keep receiving this error when I try to use a service. In this instance I'm use the campaign service. I had everything working with ClientLogin and found that Reports are only supported with OAUTH2 so I'm trying to get that implemented. I have setup my app to retrieve a offline token via the browser redirect work flow. I have also setup my adword model to request a new access token using the provided refresh token from the previous step. I can take that token and use it in the following code: api.authorize(:oauth2_token = token ) where token: {access_token=ya29.AxxxXh6zvQ, token_type=Bearer, expires_in=3600, id_token= eyJhbxxxB3MO4} this returns: {:access_token=ya29.AHEJXh6zvQ, :refresh_token=nil, :issued_at=2013-07-19 14:56:06 -0400, :expires_in=3600, :id_token= eyJhbxxxLB3MO4} When I use this api object to call the campaign service I get the output provided below. The reporting download is the final piece needed to approval and I've searched all over this group and the web and can't find anything that helps. I'm using the latest versions of the ruby gem: google-ads-common (0.9.3) and google-adwords-api (0.9.3) SOAP request: https://adwords.google.com/api/adwords/cm/v201302/CampaignService Accept-Encoding: gzip,deflate, SOAPAction: get, User-Agent: bw_console (AwApi-Ruby/0.9.3, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, curb), Authorization: Bearer ya29.AHxXh6zvQ, Content-Type: text/xml;charset=UTF-8, Content-Length: 837 ?xml version=1.0 encoding=UTF-8?env:Envelope xmlns:xsd= http://www.w3.org/2001/XMLSchema; xmlns:xsi= http://www.w3.org/2001/XMLSchema-instance; xmlns:wsdl= https://adwords.google.com/api/adwords/cm/v201302; xmlns:env= http://schemas.xmlsoap.org/soap/envelope/;env:Headerwsdl:RequestHeader xmlns=https://adwords.google.com/api/adwords/cm/v201302;userAgentconsole (AwApi-Ruby/0.9.3, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, curb)/userAgentdeveloperTokenh6Axxxweg/developerToken/wsdl:RequestHeader/env:Headerenv:Bodyget xmlns=https://adwords.google.com/api/adwords/cm/v201302 serviceSelectorfieldsId/fieldsfieldsName/fieldsfieldsStatus/fieldsorderingfieldName/fieldsortOrderASCENDING/sortOrder/ordering/serviceSelector/get/env:Body/env:Envelope HTTPI executes HTTP POST using the curb adapter SOAP response (status 500): soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/;soap:HeaderResponseHeader xmlns=https://adwords.google.com/api/adwords/cm/v201302;requestId0004e1e1b8b62a800aed881c1a3b/requestIdserviceNameCampaignService/serviceNamemethodNameget/methodNameoperations0/operationsresponseTime23/responseTimeunits0/units/ResponseHeader/soap:Headersoap:Bodysoap:Faultfaultcodesoap:Server/faultcodefaultstring[AuthenticationError.OAUTH_TOKEN_INVALID @ ; trigger:'lt;nullgt;']/faultstringdetailApiExceptionFault xmlns= https://adwords.google.com/api/adwords/cm/v201302;message[AuthenticationError.OAUTH_TOKEN_INVALID @ ; trigger:'lt;nullgt;']/messageApplicationException.TypeApiException/ApplicationException.Typeerrors xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xsi:type=AuthenticationErrorfieldPath/fieldPathtriggerlt;nullgt;/triggererrorStringAuthenticationError.OAUTH_TOKEN_INVALID/errorStringApiError.TypeAuthenticationError/ApiError.TypereasonOAUTH_TOKEN_INVALID/reason/errors/ApiExceptionFault/detail/soap:Fault/soap:Body/soap:Envelope Content-Type: text/xml; charset=UTF-8, Date: Fri, 19 Jul 2013 18:44:49 GMT, Expires: Fri, 19 Jul 2013 18:44:49 GMT, Cache-Control: private, max-age=0, X-Content-Type-Options: nosniff, X-Frame-Options: SAMEORIGIN, X-XSS-Protection: 1; mode=block, Server: GSE,
Re: In Placement Performance Report V201302 how can I identify between Automatic placements and managed?
Hi Takeshi, Any updates on the fix? We are using V201209 in our code to get placements with zero impressions. As V201209 has sunset yesterday (22 July 2013) we need the fix on V201302 ASAP. Help appreciated. On Thursday, June 20, 2013 1:30:39 PM UTC+5:30, Takeshi Hagikura (AdWords API Team) wrote: Hi Taher, We're fixing the issue that prevents zero impression rows in placement performance report. We're still working on it. @Sanju I am facing the same issue related to PLACEMENT_PERFORMANCE_**REPORT using V201302 version where am unable to see any rows in the downloaded report. Is there any update on fixing the issue. I believe it's a different issue on the one about prevent zero impression. I guess there are now rows that match your report definition. Best, - Takeshi, AdWords API Team On Wednesday, June 19, 2013 6:35:21 PM UTC+9, Taher Dhilawala wrote: Hi Takeshi, Any updates on this ? We're fixing the issue that prevents zero impression rows in placement performance report. -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ORDER BY Clicks DESC Returns INVALID_ORDER_BY_CLAUSE - Bug
Hi Marcin, Thanks for the report. I'm looking into this. I'm going to update the thread for updates. Best, - Takeshi, AdWords API Team On Tuesday, July 23, 2013 2:17:32 AM UTC+9, Marcin Rosinski wrote: Hi guys, there seems to be a bug regarding the Reporting AWQL endpoint. What steps will reproduce the problem? Run query: SELECT Query, MatchType, Clicks, Cost, Impressions FROM SEARCH_QUERY_PERFORMANCE_REPORT DURING 20130621,20130721 ORDER BY Clicks DESC Query without ORDER BY Clicks DESC works all OK. Please can you advise. P.S. Initially I have reported it here - https://code.google.com/p/google-api-adwords-php/issues/detail?id=103 but been asked to move it under this forum. -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.