Re: Date format error in examples/adspygoogle/adwords/v200909/get_unit_count.py

2010-08-18 Thread Chris Ramsay
Ok, thanks for that - will do.

Regards

On 18 Aug, 01:05, AdWords API Advisor adwordsapiadvi...@google.com
wrote:
 Hi Chris,

 Thank you for reporting this issue.  For issues that are related to
 the client library, not the API, you can file them directly against
 the library's issue tracker:

  http://code.google.com/p/google-api-adwords-python-lib/issues/list

 Best,
 - Eric Koleda, AdWords API Team

 On Aug 16, 11:47 am, Chris Ramsay raz@gmail.com wrote:



  Hello,

  I encountered a problem when running the example code to get a unit
  count for the sandbox account. I got an internal server error when
  running get_unit_count.py as suggested 
  inhttp://code.google.com/p/google-api-adwords-python-lib/wiki/Readme:

  *** Outgoing HTTP headers
  **
  User-Agent: ZSI 2.0.0 (http://pywebsvcs.sf.net);PyXMLv0.8.3
  
  *** Outgoing SOAP
  **
  ?xml version=1.0 encoding=UTF-8?
  SOAP-ENV:Envelope xmlns:SOAP-ENC=http://schemas.xmlsoap.org/soap/
  encoding/ xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/;
  xmlns:ZSI=http://www.zolera.com/schemas/ZSI/; 
  xmlns:xsd=http://www.w3.org/2001/XMLSchema; 
  xmlns:xsi=http://www.w3.org/2001/XMLSchema-
  instance
   SOAP-ENV:Header
    RequestHeader xmlns=https://adwords.google.com/api/adwords/info/
  v200909 xmlns:ns1=https://adwords.google.com/api/adwords/cm/
  v200909
     ns1:authTokenxx/ns1:authToken
     ns1:userAgentAwApi-Python-12.1.0|GoogleTest/ns1:userAgent
     ns1:developerTokenmyacco...@gmail.com++gbp/ns1:developerToken
    /RequestHeader
   /SOAP-ENV:Header
   SOAP-ENV:Body xmlns:ns1=https://adwords.google.com/api/adwords/info/
  v200909
    ns1:get xmlns:ns1=https://adwords.google.com/api/adwords/info/
  v200909
     ns1:selector
      ns1:dateRange xmlns:ns2=https://adwords.google.com/api/adwords/
  cm/v200909
       ns2:min2010801/ns2:min
       ns2:max2010816/ns2:max
      /ns1:dateRange
      ns1:apiUsageTypeUNIT_COUNT/ns1:apiUsageType
     /ns1:selector
    /ns1:get
   /SOAP-ENV:Body
  /SOAP-ENV:Envelope
  
  *** Incoming HTTP headers
  **
  500 Internal Server Error
  Content-Type: text/xml; charset=UTF-8
  Content-Encoding: gzip
  Transfer-Encoding: chunked
  Date: Mon, 16 Aug 2010 15:20:12 GMT
  Expires: Mon, 16 Aug 2010 15:20:12 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?
  soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/;
   soap:Body
    soap:Fault
     faultcodesoap:Server/faultcode
     faultstringFault occurred while processing./faultstring
    /soap:Fault
   /soap:Body
  /soap:Envelope
  

  The problem seems to be the date formatting, where ns2:min2010801/
  ns2:min should be ns2:min20100801/ns2:min etc.

  In examples/adspygoogle/adwords/v200909/get_unit_count.py

  lines 44 - 48
  selector = {
      'dateRange': {
          'min': '%s%s01' % (today.year, today.month),
          'max': '%s%s%s' % (today.year, today.month, today.day)
      },

  today.month should be formatted to supply a month as two digit always;
  presently it formats August as '8' rather than '08' on my system.

  Correcting this date formatting results in a successful request to the
  service.

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: TargetingIdea costs

2010-08-18 Thread Justin
Just wondering if you'd had a chance to look at my query.

It would be good to get an answer today if that's possible.

Kind regards

Justin

On Aug 17, 6:36 pm, Justin justindeavi...@googlemail.com wrote:
 Hi Eric

 I hope you can help me. I'm trying to calculate the costs of making
 calls to your API to get keyword ideas. I'd like to get an idea of the
 costs before our technical team starts work on the implementation.

 I want to be able to submit a keyword and get back 200 keyword
 suggestions along with a search count (my parameters are that I want a
 search count from the US in English). I want to limit the costs - so I
 don't want more than 200 keywords returned.

 I've looked at your rate sheet and I reckon that we should be using
 the TargetingIdea call.

 And I reckon this will cost us:

 * 5 units (per-request cost); plus
 * (for 200 keywords), 200*0.1 units

 So, 25 units in total.

 You charge $0.25/1000 units. So, just to check, I'd be able to make
 that call 160 times for $1.

 Could you let me know whether my understanding is correct?

 Thanks and kind regards

 Justin

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: Better way to manage Ad Extensions?

2010-08-18 Thread AdWords API Advisor
Hi Joel,

To add (or modify) SiteLinks for a campaign, you have to

- Check if there is an active SiteLinkExtension. If yes, remove it.
(Otherwise you will get
CANNOT_HAVE_MULTIPLE_SITELINKS_EXTENSIONS_PER_CAMPAIGN).
- Add a new SiteLinkExtension with the desired SiteLinks.

The sample code in C# to check if a campaign has active sitelinks is
given below:

long siteLinkExtensionId = -1;

// Get the campaign ad extension containing sitelinks.
CampaignAdExtensionSelector selector = new
CampaignAdExtensionSelector();
selector.campaignIds = new long[] { campaignId };
selector.statuses = new CampaignAdExtensionStatus[]
{ CampaignAdExtensionStatus.ACTIVE };

CampaignAdExtensionPage page = campaignExtensionService.get(selector);
if (page != null  page.entries != null) {
  foreach (CampaignAdExtension extension in page.entries) {
if (extension.adExtension is SitelinksExtension) {
  siteLinkExtensionId = extension.adExtension.id;
  break;
}
  }
}

If there are active sitelinks, then you can remove them as follows:

if (siteLinkExtensionId == -1) {
  return; // No active sitelinks, so no need to remove.
}

CampaignAdExtension campaignAdExtension = new CampaignAdExtension();
campaignAdExtension.campaignId = campaignId;
campaignAdExtension.adExtension = new AdExtension(); // no need to
create a SiteLinksExtension here, just an AdExtension would do.
campaignAdExtension.adExtension.id = siteLinkExtensionId;

CampaignAdExtensionOperation operation = new
CampaignAdExtensionOperation();
operati...@operator = Operator.REMOVE;
operation.operand = campaignAdExtension;

CampaignAdExtensionReturnValue retVal =
campaignExtensionService.mutate(new CampaignAdExtensionOperation[]
{ operation });

Now you can add sitelinks as follows:

// create your sitelinks.
Sitelink siteLink = new Sitelink();
siteLink.displayText = New albums;
siteLink.destinationUrl = http://www.example.com/albums/new;;

SitelinksExtension siteLinkExtension = new SitelinksExtension();
siteLinkExtension.sitelinks = new Sitelink[] {siteLink};

CampaignAdExtension campaignAdExtension = new CampaignAdExtension();
campaignAdExtension.adExtension = siteLinkExtension;
campaignAdExtension.campaignId = campaignId;

CampaignAdExtensionOperation operation = new
CampaignAdExtensionOperation();
operati...@operator = Operator.ADD;
operation.operand = campaignAdExtension;

CampaignAdExtensionReturnValue retVal =
campaignExtensionService.mutate(new CampaignAdExtensionOperation[]
{operation});


Hope this helps. Let me know if you have more questions.

Cheers,
Anash P. Oommen,
AdWords API Advisor.

On Aug 18, 1:13 am, joel joel.patt...@gmail.com wrote:
 To follow-up, I can't even seem to remove SiteLinks using my
 methodology above. If I request the SiteLinks and then attempt a
 REMOVE operation, I get a NotEmptyError.EMPTY_LIST exception because
 my SitelinksExtension object has no Sitelinks attached. If I don't
 remove and simply call another ADD while specifying the existing
 SitelinksExtension Id, I get an INVALID_ADEXTENSION_ID errors. Lastly,
 if I simply try to ADD without setting the Id or removing, then I get
 a CANNOT_HAVE_MULTIPLE_SITELINKS_EXTENSIONS_PER_CAMPAIGN error.

 Here's a snippet of my code:

 CampaignAdExtensionServiceInterface extSvc =
 user.getService(AdWordsService.V201003.CAMPAIGN_AD_EXTENSION_SERVICE);

 try
 {
                 CampaignAdExtensionSelector selector = new
 CampaignAdExtensionSelector();
                 selector.setCampaignIds(new long[]
 { dbCampaign.getExternalIdAsLong() });

                 // Get all campaign ad extensions.
                 CampaignAdExtensionPage page = extSvc.get(selector);

                 // Display campaign ad extensions.
                 if (page.getEntries() != null 
 page.getEntries().length  0)
                 {
                     for (CampaignAdExtension campaignAdExtension :
 page.getEntries())
                     {
                         if
 (campaignAdExtension.getAdExtension().getAdExtensionType().equals(Sitelink 
 sExtension))
                         {
                             SitelinksExtension ext = new
 SitelinksExtension();

 ext.setId(campaignAdExtension.getAdExtension().getId());

                             CampaignAdExtension extension = new
 CampaignAdExtension();

 extension.setCampaignId(dbCampaign.getExternalIdAsLong());
                             extension.setAdExtension(ext);

                             CampaignAdExtensionOperation operation =
 new CampaignAdExtensionOperation();
                             operation.setOperand(extension);
                             operation.setOperator(Operator.REMOVE);

                             extSvc.mutate(new
 CampaignAdExtensionOperation[] { operation });

                             break;
                         }
                     }
                 }
             }
             catch (Exception e)
             {
                 ServiceResult failure =
 

Re: scopingEntityId bulkmutatejobservice

2010-08-18 Thread AdWords API Advisor
HI Jean,

scopingEntityId is a field of type EntityId. See
http://code.google.com/apis/adwords/v2009/docs/reference/BulkMutateJobService.EntityId.html
for details. When creating a campaign, you can set the scopingEntityId
as  CUSTOMER_ID. That said, BulkMutateJobService is meant for
performing bulk operations, and v201003 requires you to have at least
100 operations per job. Since an account can have upto 25 campaigns
only, it is easier to manage them using the regular synchronous APIs.

Cheers,
Anash P. Oommen,
AdWords API Advisor.

On Aug 17, 7:23 pm, jean robert multicom...@adweb-media.com wrote:
 Hi
 I am using the bulkmutatejobservice and I dont understand the interest
 of scopingEntityId

 Each time i do:

 $OpStream- scopingEntityId = new EntityID ('CAMPAIGN_ID', 0);
 and my groups,ads,keywords are well createdin the good
 campaigns(the campaign's id is defined in the  AdGroup operation when
 creating an adgroup for example)

 What value should I put when creating a campaign?

 Can we create only campaign's groups in a job or can we create
 groups of different campaigns in the same job?
 In this case, what value should I use for scopingEntityId.

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: Keyword each announcement.

2010-08-18 Thread AdWords API Advisor
Hi Rafael,

I assume you are trying to retrieve keywords in an ad group. If yes,
have a look at 
http://code.google.com/p/google-api-adwords-php/source/browse/trunk/examples/v201003/GetAllAdGroupCriteria.php.

Cheers,
Anash P. Oommen,
AdWords API Advisor.

On Aug 17, 11:54 pm, rsan...@allinmedia.com.br m...@gpmidia.com.br
wrote:
 Friends,

 How do I search for key words in each advertisement.

 I downloaded a library of sample code. In this link:

 http://code.google.com/p/google-api-adwords-php/downloads/list

 More there is no file that searches key words in each advertisement.

 I'm using PHP 5.3 and NuSOAP

 Please help me and my work is stopped.

 Thank you.

 Rafael

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: Negative Keywords (campaign level and group level)

2010-08-18 Thread AdWords API Advisor
Hi Eric,

1. To get all adgroup level negative criteria, you can refer to
http://code.google.com/p/google-api-adwords-dotnet/source/browse/trunk/Examples/v201003/GetAllAdGroupCriteria.cs.
You need to specify an additional field in selector to restrict it for
negative criteria only:

selector.criterionUse = CriterionUse.NEGATIVE;

2. I don't have a handy example for setting an adgroup negative
criteria, but it is quite similar to
http://code.google.com/p/google-api-adwords-dotnet/source/browse/trunk/Examples/v201003/AddAdGroupCriteria.cs.
The only major difference is that instead of creating a
BiddableAdGroupCriterion, you create a  NegativeAdGroupCriterion.

3. You can pass an empty selector while retrieving campaign level
negative keywords. This will give you results for the entire account.

CampaignCriterionSelector selector = new CampaignCriterionSelector();
CampaignCriterionPage page = campaignCriterionService.get(selector);

4. See 
http://code.google.com/p/google-api-adwords-dotnet/source/browse/trunk/Examples/v201003/AddNegativeCampaignCriterion.cs
for a code example.
5. No, you have to use (1) and (3) to accomplish this.

Cheers,
Anash P. Oommen,
AdWords API Advisor.

On Aug 17, 10:29 pm, Eric ericliu6...@gmail.com wrote:
 Hello,
 I am currently implementing the Negative Keywords feature in our
 system(.net)
 After some online research, I still have some questions that need help
 from your team. Thanks a lot.

 1.      Retrieve group level negative keywords for my whole account(all
 groups)
                    We can use (Structure report with aggregationTypes
 “Keyword” and column “kwisnegative”) to get group level negative
 keywords.
     Seems Campaign level negative keywords is not included in this
 report, right?

 2.      Set Group Level negative keywords
         AdGroupCriterionService mutate NegativeAdGroupCriterion.

 3.      Retrieve campaign level negative keywords for my whole account(all
 campaigns)
 CampaignCriterionService get with all the campaignids in the
 idFilters.

  Any suggestion to get all the campaign negative keywords for all
 campaigns without explicitly input all campaign ids?

 4.      Set Campaign  Level negative keywords
 CampaignCriterionService mutate NegativeCampaignCriterion

 5.      Is there a API call that can get all the negative keywords under a
 single account(including both group level and campaign level)?

 Besides, Is there any other more efficient options(faster) that you
 can suggest?

 ANY HELP IS GREATLY APPRECIATED!
 Thanks a lot.

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


View Through Conversions via API supported in v201003

2010-08-18 Thread t...@smecsells.com
Hi,

is it now possible to fetch View-Through-Conversions via the new
version of the API?
If so, how?

thx
tim

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: scopingEntityId bulkmutatejobservice

2010-08-18 Thread jean robert
Hi Anash,
Thanks for your answer.
Can you confirm scopingEntityId  is not necessary.
When I create groups, I put a '0'(new EntityID ('CAMPAIGN_ID', 0);)
and my groups are well created anyway!???
So I dont understand the interest.

v201003 requires you to have at least 100 operations per job.
You mean under 100 operations per job we have to use regular
synchronous services?

Thank you for your help

Regards

Jean

On 18 août, 13:17, AdWords API Advisor adwordsapiadvi...@google.com
wrote:
 HI Jean,

 scopingEntityId is a field of type EntityId. 
 Seehttp://code.google.com/apis/adwords/v2009/docs/reference/BulkMutateJo...
 for details. When creating a campaign, you can set the scopingEntityId
 as  CUSTOMER_ID. That said, BulkMutateJobService is meant for
 performing bulk operations, and v201003 requires you to have at least
 100 operations per job. Since an account can have upto 25 campaigns
 only, it is easier to manage them using the regular synchronous APIs.

 Cheers,
 Anash P. Oommen,
 AdWords API Advisor.

 On Aug 17, 7:23 pm, jean robert multicom...@adweb-media.com wrote:

  Hi
  I am using the bulkmutatejobservice and I dont understand the interest
  of scopingEntityId

  Each time i do:

  $OpStream- scopingEntityId = new EntityID ('CAMPAIGN_ID', 0);
  and my groups,ads,keywords are well createdin the good
  campaigns(the campaign's id is defined in the  AdGroup operation when
  creating an adgroup for example)

  What value should I put when creating a campaign?

  Can we create only campaign's groups in a job or can we create
  groups of different campaigns in the same job?
  In this case, what value should I use for scopingEntityId.



-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: Better way to manage Ad Extensions?

2010-08-18 Thread joel
Thank you, that worked. I was 99% of the way there.

The only difference is that in my REMOVE operation I was using new
SiteLinkExtension() whereas you used new AdExtension(); // no
need to create a SiteLinksExtension here, just an AdExtension would
do.

So for future reference for others: use the generic AdExtension object
in REMOVES.

Thanks,

Joel


On Aug 18, 7:00 am, AdWords API Advisor adwordsapiadvi...@google.com
wrote:
 Hi Joel,

 To add (or modify) SiteLinks for a campaign, you have to

 - Check if there is an active SiteLinkExtension. If yes, remove it.
 (Otherwise you will get
 CANNOT_HAVE_MULTIPLE_SITELINKS_EXTENSIONS_PER_CAMPAIGN).
 - Add a new SiteLinkExtension with the desired SiteLinks.

 The sample code in C# to check if a campaign has active sitelinks is
 given below:

 long siteLinkExtensionId = -1;

 // Get the campaign ad extension containing sitelinks.
 CampaignAdExtensionSelector selector = new
 CampaignAdExtensionSelector();
 selector.campaignIds = new long[] { campaignId };
 selector.statuses = new CampaignAdExtensionStatus[]
 { CampaignAdExtensionStatus.ACTIVE };

 CampaignAdExtensionPage page = campaignExtensionService.get(selector);
 if (page != null  page.entries != null) {
   foreach (CampaignAdExtension extension in page.entries) {
     if (extension.adExtension is SitelinksExtension) {
       siteLinkExtensionId = extension.adExtension.id;
       break;
     }
   }

 }

 If there are active sitelinks, then you can remove them as follows:

 if (siteLinkExtensionId == -1) {
   return; // No active sitelinks, so no need to remove.

 }

 CampaignAdExtension campaignAdExtension = new CampaignAdExtension();
 campaignAdExtension.campaignId = campaignId;
 campaignAdExtension.adExtension = new AdExtension();     // no need to
 create a SiteLinksExtension here, just an AdExtension would do.
 campaignAdExtension.adExtension.id = siteLinkExtensionId;

 CampaignAdExtensionOperation operation = new
 CampaignAdExtensionOperation();
 operati...@operator = Operator.REMOVE;
 operation.operand = campaignAdExtension;

 CampaignAdExtensionReturnValue retVal =
     campaignExtensionService.mutate(new CampaignAdExtensionOperation[]
 { operation });

 Now you can add sitelinks as follows:

 // create your sitelinks.
 Sitelink siteLink = new Sitelink();
 siteLink.displayText = New albums;
 siteLink.destinationUrl = http://www.example.com/albums/new;;

 SitelinksExtension siteLinkExtension = new SitelinksExtension();
 siteLinkExtension.sitelinks = new Sitelink[] {siteLink};

 CampaignAdExtension campaignAdExtension = new CampaignAdExtension();
 campaignAdExtension.adExtension = siteLinkExtension;
 campaignAdExtension.campaignId = campaignId;

 CampaignAdExtensionOperation operation = new
 CampaignAdExtensionOperation();
 operati...@operator = Operator.ADD;
 operation.operand = campaignAdExtension;

 CampaignAdExtensionReturnValue retVal =
     campaignExtensionService.mutate(new CampaignAdExtensionOperation[]
 {operation});

 Hope this helps. Let me know if you have more questions.

 Cheers,
 Anash P. Oommen,
 AdWords API Advisor.

 On Aug 18, 1:13 am, joel joel.patt...@gmail.com wrote:

  To follow-up, I can't even seem to remove SiteLinks using my
  methodology above. If I request the SiteLinks and then attempt a
  REMOVE operation, I get a NotEmptyError.EMPTY_LIST exception because
  my SitelinksExtension object has no Sitelinks attached. If I don't
  remove and simply call another ADD while specifying the existing
  SitelinksExtension Id, I get an INVALID_ADEXTENSION_ID errors. Lastly,
  if I simply try to ADD without setting the Id or removing, then I get
  a CANNOT_HAVE_MULTIPLE_SITELINKS_EXTENSIONS_PER_CAMPAIGN error.

  Here's a snippet of my code:

  CampaignAdExtensionServiceInterface extSvc =
  user.getService(AdWordsService.V201003.CAMPAIGN_AD_EXTENSION_SERVICE);

  try
  {
                  CampaignAdExtensionSelector selector = new
  CampaignAdExtensionSelector();
                  selector.setCampaignIds(new long[]
  { dbCampaign.getExternalIdAsLong() });

                  // Get all campaign ad extensions.
                  CampaignAdExtensionPage page = extSvc.get(selector);

                  // Display campaign ad extensions.
                  if (page.getEntries() != null 
  page.getEntries().length  0)
                  {
                      for (CampaignAdExtension campaignAdExtension :
  page.getEntries())
                      {
                          if
  (campaignAdExtension.getAdExtension().getAdExtensionType().equals(Sitelink 
  sExtension))
                          {
                              SitelinksExtension ext = new
  SitelinksExtension();

  ext.setId(campaignAdExtension.getAdExtension().getId());

                              CampaignAdExtension extension = new
  CampaignAdExtension();

  extension.setCampaignId(dbCampaign.getExternalIdAsLong());
                              extension.setAdExtension(ext);

                              

Re: scopingEntityId bulkmutatejobservice

2010-08-18 Thread jean robert
Hi Anash,
Thanks for your answer.
Can you confirm scopingEntityId  is not necessary.
When I create groups, I put a '0'(new EntityID ('CAMPAIGN_ID', 0);)
and my groups are well created anyway!???
So I dont understand the interest.

v201003 requires you to have at least 100 operations per job.
You mean under 100 operations per job we have to use regular
synchronous services?

Thank you for your help

Regards

Jean

On 18 août, 13:17, AdWords API Advisor adwordsapiadvi...@google.com
wrote:
 HI Jean,

 scopingEntityId is a field of type EntityId. 
 Seehttp://code.google.com/apis/adwords/v2009/docs/reference/BulkMutateJo...
 for details. When creating a campaign, you can set the scopingEntityId
 as  CUSTOMER_ID. That said, BulkMutateJobService is meant for
 performing bulk operations, and v201003 requires you to have at least
 100 operations per job. Since an account can have upto 25 campaigns
 only, it is easier to manage them using the regular synchronous APIs.

 Cheers,
 Anash P. Oommen,
 AdWords API Advisor.

 On Aug 17, 7:23 pm, jean robert multicom...@adweb-media.com wrote:

  Hi
  I am using the bulkmutatejobservice and I dont understand the interest
  of scopingEntityId

  Each time i do:

  $OpStream- scopingEntityId = new EntityID ('CAMPAIGN_ID', 0);
  and my groups,ads,keywords are well createdin the good
  campaigns(the campaign's id is defined in the  AdGroup operation when
  creating an adgroup for example)

  What value should I put when creating a campaign?

  Can we create only campaign's groups in a job or can we create
  groups of different campaigns in the same job?
  In this case, what value should I use for scopingEntityId.



-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: scopingEntityId bulkmutatejobservice

2010-08-18 Thread jean robert
Hi Anash,
Thanks for your answer.
Can you confirm scopingEntityId  is not necessary.
When I create groups, I put a '0'(new EntityID ('CAMPAIGN_ID', 0);)
and my groups are well created anyway!???
So I dont understand the interest.

v201003 requires you to have at least 100 operations per job.
You mean under 100 operations per job we have to use regular
synchronous services?

Thank you for your help

Regards

Jean

On 18 août, 13:17, AdWords API Advisor adwordsapiadvi...@google.com
wrote:
 HI Jean,

 scopingEntityId is a field of type EntityId. 
 Seehttp://code.google.com/apis/adwords/v2009/docs/reference/BulkMutateJo...
 for details. When creating a campaign, you can set the scopingEntityId
 as  CUSTOMER_ID. That said, BulkMutateJobService is meant for
 performing bulk operations, and v201003 requires you to have at least
 100 operations per job. Since an account can have upto 25 campaigns
 only, it is easier to manage them using the regular synchronous APIs.

 Cheers,
 Anash P. Oommen,
 AdWords API Advisor.

 On Aug 17, 7:23 pm, jean robert multicom...@adweb-media.com wrote:

  Hi
  I am using the bulkmutatejobservice and I dont understand the interest
  of scopingEntityId

  Each time i do:

  $OpStream- scopingEntityId = new EntityID ('CAMPAIGN_ID', 0);
  and my groups,ads,keywords are well createdin the good
  campaigns(the campaign's id is defined in the  AdGroup operation when
  creating an adgroup for example)

  What value should I put when creating a campaign?

  Can we create only campaign's groups in a job or can we create
  groups of different campaigns in the same job?
  In this case, what value should I use for scopingEntityId.



-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: Not able to test Rohan Almeida's Perl client library on sandbox

2010-08-18 Thread AdWords API Advisor
Hi,

Unfortunately Rohan' client library is not longer supported by Google,
however we are working on releasing a new Perl library soon.

Best,
- David Torres, AdWords API Team

On Aug 17, 1:27 pm, Media Math mediamath@gmail.com wrote:
 Hi,

 I am trying to use Rohan Almeida's Perl Client Library to use
 ReportService. Here is what I did, and not able to succeed:

 1. Installed all pre-requisite modules
 2. Installed Rohan's Client Library from CPAN
 3. When I ran 'make test' I am getting below message:

 PERL_DL_NONLAZY=1 /usr/bin/perl -MExtUtils::Command::MM -e
 test_harness(0, 'blib/lib', 'blib/arch') t/*.t
 t/perlcriticskipped
         all skipped: Author test.  Set $ENV{TEST_AUTHOR} to a true
 value to run.
 t/
 pod...ok
 t/
 run...ok
 t/sandbox...ok 1/0Use of uninitialized value in substitution
 (s///) at /usr/lib/perl5/site_perl/5.8.8/SOAP/Lite.pm line 1055.
 Use of uninitialized value in exists at /usr/lib/perl5/site_perl/5.8.8/
 SOAP/Lite.pm line 1056.
 Use of uninitialized value in hash element at /usr/lib/perl5/site_perl/
 5.8.8/SOAP/Lite.pm line 1056.
 Use of uninitialized value in hash element at /usr/lib/perl5/site_perl/
 5.8.8/SOAP/Lite.pm line 1060.
 Use of uninitialized value in hash element at /usr/lib/perl5/site_perl/
 5.8.8/SOAP/Lite.pm line 1060.
 t/sandbox...ok 10/0URI is not provided as an attribute for method
 (getAllJobs)
 URI is not provided as an attribute for method (getReportJobStatus)
 t/
 sandbox...ok
 All tests successful, 1 test skipped.

 Can you please let me know the proper way to test it or if you could
 send me a sample code to use Rohan's library with ReportService on
 both prod/sandbox.

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Wrong clic value

2010-08-18 Thread Clem
Hello everyone. I come with a weird problem. I'm using the API to
download 1 month worth of data. I have every value correct for my
adgroups but two of them have a value that exceeds the one i can see
on adwords.google.fr for the last day of my download.

For example

If i download every value from july 16th 2010 to august 15th 2010 (i
download them on august 16th) all the values will be correct except
for two adgroups that have a value for clicks that exceed the one
shown on adwords for the 15th.

How is that possible ? I live in France, and i downloaded them at
9am.  Could it be a time difference ?

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Negative Polygon Targeting

2010-08-18 Thread Pete Lavetsky (AdWords API Guru)
We've been negative targeting polygons for some time.  Recently, we
were informed by a Google rep that this was a loophole.  However, the
online documentation states you can exclude ( negatively target ) a
polygon: 
http://code.google.com/apis/adwords/v2009/docs/reference/CampaignTargetService.PolygonTarget.html

Documentation and loophole aside, how can we go about transforming
our negative polygon targets to something proper for Google.  An idea
is to find all the cities in the previously negatively targeted
polygon and negatively target those cities, at the same time
positively targeting the previous negatively targeted polygon.
Simply, target an area, but exclude all cities in the area.

I can't seem to get that idea to work.  I always receive a
TargetError.CANNOT_EXCLUDE_IF_NOT_TARGETED  error ...

Thoughts?

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


how can i get Maximum CPC using Adgroupcriterion

2010-08-18 Thread Syed
hi,

   I am trying to retreive all the keyword in a adgroup. I am using
adgroupCriterion as shown belowe.


AdGroupCriterionServiceInterface criterionService =
googleServiceFactory.getAdWordsService(user,
AdWordsService.V200909.ADGROUP_CRITERION_SERVICE);
AdGroupCriterionIdFilter[] idFilters = {new
AdGroupCriterionIdFilter(null, adgroup.getId(), null)} ;
AdGroupCriterionSelector agcSelector = new
AdGroupCriterionSelector(idFilters , null, null, null, null);
agcSelector.setIdFilters(idFilters);
agcSelector.setCriterionUse(CriterionUse.BIDDABLE);
AdGroupCriterionPage criterionPage =
criterionService.get(agcSelector);
 if ( criterionPage!= null  criterionPage.getEntries() != null) {
for(AdGroupCriterion adgroupCriterion :
criterionPage.getEntries()){
ckeyword =(Keyword)adgroupCriterion.getCriterion();
adGroupKeyword = (BiddableAdGroupCriterion)
criterionPage.getEntries(0);
   }
   }

Now can anyone tell me how to get maxCPC using this. Its urgetn please.

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: Reporting by ad extension. Does it exist?

2010-08-18 Thread AdWords API Advisor
Hi Peer,

Unfortunately there are no stats or reports for AdExtensions available
in the API at this time.

Best,
- Eric Koleda, AdWords API Team

On Aug 17, 9:13 am, Peer Jakobsen (AdWords API Guru)
peer.jakob...@gmail.com wrote:
 Hello,

 Is there any way to get cost stats per AdExtension through V201003
 reports?

 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


Re: how can i get Maximum CPC using Adgroupcriterion

2010-08-18 Thread Navneet
if ( criterionPage!= null  criterionPage.getEntries() != null) {
for(AdGroupCriterion adgroupCriterion :
criterionPage.getEntries()){

BiddableAdGroupCriterion BiddableadGroupCriterion =
(BiddableAdGroupCriterion)adgroupCriterion;
  if (BiddableadGroupCriterion.criterion is Keyword)
{
   long lngMaxCPC = 0;
   Keyword ckeyword =
(Keyword)BiddableadGroupCriterion.criterion;
   lngMaxCPC = (BiddableadGroupCriterion.bids as
ManualCPCAdGroupCriterionBids).maxCpc.amount.microAmount;
}


}
}

I hope this helps
--Navneet


On Aug 18, 2:17 pm, Syed javeed.s...@gmail.com wrote:
 hi,

    I am trying to retreive all the keyword in a adgroup. I am using
 adgroupCriterion as shown belowe.

 AdGroupCriterionServiceInterface criterionService =
 googleServiceFactory.getAdWordsService(user,
 AdWordsService.V200909.ADGROUP_CRITERION_SERVICE);
         AdGroupCriterionIdFilter[] idFilters = {new
 AdGroupCriterionIdFilter(null, adgroup.getId(), null)} ;
         AdGroupCriterionSelector agcSelector = new
 AdGroupCriterionSelector(idFilters , null, null, null, null);
         agcSelector.setIdFilters(idFilters);
         agcSelector.setCriterionUse(CriterionUse.BIDDABLE);
         AdGroupCriterionPage criterionPage =
 criterionService.get(agcSelector);
  if ( criterionPage!= null  criterionPage.getEntries() != null) {
             for(AdGroupCriterion adgroupCriterion :
 criterionPage.getEntries()){
                 ckeyword =(Keyword)adgroupCriterion.getCriterion();
                 adGroupKeyword = (BiddableAdGroupCriterion)
 criterionPage.getEntries(0);
        }
    }

 Now can anyone tell me how to get maxCPC using this. Its urgetn please.

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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