Hi David,

Although you created a CampaignCriterionIdFilter[] of size 1, you
never actually created a CampaignCriterionIdFilter object to put in
that array.

// You had this.
CampaignCriterionIdFilter[] ccIDfilters = new
CampaignCriterionIdFilter[1];

// Now add this.
ccIDfilters[0] = new CampaignCriterionIdFilter();

// You had this.
ccIDfilters[0].campaignId = campaignID;

Best,
- Eric

On Feb 18, 9:25 am, David <cont...@akamarketing.com> wrote:
> Hi Eric and all. I've set up soap logging but nothing goes into the
> log as the error occurs before the campaignTargetService.get method is
> called. http log and soap log is both empty. I've isolated campaign
> negative keywords into a test page but can confirm logging works as
> stuff is being logged from my main app.
>
> If I'm doing someone crazy wrong and stupid well then my bad but I
> can't for the life of me get this to work.
>
> My method for campaign neg keywords is :
>
> public static int getCampaignNegativeKWCountV2009(string campaignName,
> long campaignID, string accountIDstring)
>     {
>         Debug.WriteLine("camp name is " +  campaignName + " ||| camp
> id is = " + campaignID.ToString());
>
>         AdWordsUser user = new AdWordsUser();
>         CampaignCriterionService campaignCriterionService =
> (CampaignCriterionService)user.GetService(AdWordsService.v200909.CampaignCr 
> iterionService);
>         campaignCriterionService.RequestHeader.clientCustomerId =
> accountIDstring;
>
>         CampaignCriterionSelector ccs = new
> CampaignCriterionSelector();
>
>         //filter which campaigns you want data for
>         CampaignCriterionIdFilter[] ccIDfilters = new
> CampaignCriterionIdFilter[1];
>         ccIDfilters[0].campaignId = campaignID;
> ccIDfilters[0].campaignIdSpecified = true; //ERROR HERE
>
>         //associate selector with filters
>         ccs.idFilters = ccIDfilters;
>
>         //get what you want
>         CampaignCriterion[] criterions =
> (CampaignCriterion[])campaignCriterionService.get(ccs).entries;
>
>         //// no campaign level neg KWs
>         if (criterions == null)
>             return 0;
>
>         int keywordCount = 0;
>         for (int i = 0; i < criterions.Length; i++)
>             //confirm the negative criteria of a KW and not a URL
> (content network)
>             if (criterions[i].GetType().Name == "Keyword") keywordCount
> ++;
>
>         return keywordCount;
>     }
>
> The error I get is
>
> Object reference not set to an instance of an object.  at this line.
> ccIDfilters[0].campaignId = campaignID;
> ccIDfilters[0].campaignIdSpecified = true;
>
> campaigncritierionselectors expects an array of
> CampaignCriterionIdFilter's. So I create an array with a capcity of 1
> and fill its zero'th element with a long which I know is not null and
> is proper..  but ccIDfilters doesn't seem to be getting created
> propertly. I went into the CampaignCriterionIdFilter defintion code
> and didn't see a constructor but its a partial class so that's prob
> why.
>
> I'm sure its something stupid I'm missing but a working .net example
> would be great. I'm using .net client lib v7. The new one.
>
> cheers.
>
> On Feb 17, 4:37 pm, David <cont...@akamarketing.com> wrote:
>
>
>
> > Thanks Eric. I'll try and set up SOAP logging. Can you tell me though
> > is my code correct?
>
> > Rgds
> > david.
>
> > On Feb 17, 3:57 pm, AdWords API Advisor <adwordsapiadvi...@google.com>
> > wrote:
>
> > > Hi David,
>
> > > When you have problems like this its always best to look at the SOAP
> > > request and response XML.  Please post this XML to this thread and
> > > that should shed some light on the problem.
>
> > > Best,
> > > - Eric Koleda, AdWords API Team
>
> > > On Feb 16, 9:53 am, David <cont...@akamarketing.com> wrote:
>
> > > > Thanks again Ursula. I'm using the .net client library anyhow but
> > > > understand that what you have is still pretty much what I'm doing. The
> > > > methods do seem different slightly though which I find strange because
> > > > the end soap web service is the same one for both java and .net, but
> > > > the surrounding framework is obviously different for one programming
> > > > language v another.  I don't really know what or if
> > > > campaignIDspecified is used for.
>
> > > > But the basic process between your code and mine is the same and is :
>
> > > > > > //create service
> > > > > > //create selector
> > > > > > //create campaign filters based on campaignID
> > > > > > //associate filters with selector
> > > > > > //associate (pass in) selector with service get call.
>
> > > > I don't think im populating filters incorrectly..
>
> > > >  > //THINK I'M GOING WRONG HERE - campaignID is a long
>
> > > > > > CampaignCriterionIdFilter[] ccIDfilters = new
> > > > > > CampaignCriterionIdFilter[1];
> > > > > > ccIDfilters[0].campaignId = campaignID;
> > > > > > ccIDfilters[0].campaignIdSpecified = true;
>
> > > > > > //ADDING THE FILTERS TO THE SELECTOR I CREATED ABOVE
> > > > > > ccs.idFilters = ccIDfilters;
>
> > > > Any Google reps know where I'm going wrong. The filters object of the
> > > > selector is always null.
>
> > > > On Feb 16, 2:28 pm, Ursula <ursula.kellm...@gmail.com> wrote:
>
> > > > > Hi David,
>
> > > > > Here is a snippet of my code that works ( java).  Do you have a wrong
> > > > > import or something for the CampaignCriterionIdFilter?  I don't see a
> > > > > property call campaignIdSpecified in my source.
>
> > > > > //AdwordsNetworkAccount is a wrapper around the client api adwordsUser
> > > > > object
>
> > > > >  public List<NegativeCampaignCriterion> getCampaignNegativeKeywords(
>
> > > > > AdwordsNetworkAccount adwordsNetworkAccount,
>
> > > > > long[] campaignChannelIDs)
> > > > > CampaignCriterionServiceInterface service =
> > > > >                 getCampaignCriterionService(adwordsNetworkAccount);
>
> > > > >             CampaignCriterionSelector selector = new
> > > > > CampaignCriterionSelector();
>
> > > > >             // Initialize the array of filters
> > > > >             CampaignCriterionIdFilter[] criterionFilter =
> > > > >                 new
> > > > > CampaignCriterionIdFilter[campaignChannelIDs.length];
> > > > >             selector.setIdFilters(criterionFilter);
>
> > > > >             CampaignCriterionIdFilter filter = null;
> > > > >             for (int i = 0; i < campaignChannelIDs.length; i++)
> > > > >             {
> > > > >                 filter = new CampaignCriterionIdFilter();
> > > > >                 filter.setCampaignId(campaignChannelIDs[i]);
> > > > >                 selector.setIdFilters(i, filter);
> > > > >             }
>
> > > > >             CampaignCriterionPage criterion = service.get(selector);
>
> > > > > On Feb 16, 5:18 am, David <cont...@akamarketing.com> wrote:
>
> > > > > > Hi Ursula, thanks for your help, however thats pretty much what I'm
> > > > > > attempting to do already. I don't see a selector.setIdFilters 
> > > > > > method I
> > > > > > just see a selector.IdFilters method.
>
> > > > > > I'm trying the below.
> > > > > > //create service
> > > > > > //create selector
> > > > > > //create campaign filters based on campaignID
> > > > > > //associate filters with selector
> > > > > > //associate (pass in) selector with service get call.
>
> > > > > > Sample of my code is below.
>
> > > > > > AdWordsUser user = new AdWordsUser(headers);
> > > > > > CampaignCriterionService campaignCriterionService =
> > > > > > (CampaignCriterionService)user.GetService(AdWordsService.v200909.CampaignCr
> > > > > >  iterionService);
>
> > > > > > //SELECTOR CREATED HERE CALLED CCS
> > > > > > CampaignCriterionSelector ccs = new CampaignCriterionSelector();
>
> > > > > > //THINK I'M GOING WRONG HERE - campaignID is a long
> > > > > > CampaignCriterionIdFilter[] ccIDfilters = new
> > > > > > CampaignCriterionIdFilter[1];
> > > > > > ccIDfilters[0].campaignId = campaignID;
> > > > > > ccIDfilters[0].campaignIdSpecified = true;
>
> > > > > > //ADDING THE FILTERS TO THE SELECTOR I CREATED ABOVE
> > > > > > ccs.idFilters = ccIDfilters;
>
> > > > > > //PASSING THE SELECTOR IN TO THE MAIN GET CALL
> > > > > > CampaignCriterion[] criterions =
> > > > > > (CampaignCriterion[])campaignCriterionService.get(ccs).entries;
>
> > > > > > Has anyone got any example code from this?
>
> > > > > > thanks in advance.
>
> > > > > > On Feb 15, 10:30 pm, Ursula <ursula.kellm...@gmail.com> wrote:
>
> > > > > > > You need to create a CampaignCriterionSelector as well :
>
> > > > > > >   CampaignCriterionSelector selector = new
> > > > > > > CampaignCriterionSelector();
>
> > > > > > > and then add the  CampaignCriterionIdFilter that you created:
>
> > > > > > > selector.setIdFilters(  ccIDfilters)
>
> > > > > > > then pass this selector to the get method.
> > > > > > > campaignCriterionService.get(selector).entries;
>
> > > > > > > Ursula Kellmann
>
> > > > > > > On Feb 15, 6:11 am, David <cont...@akamarketing.com> wrote:
>
> > > > > > > > Anyone got any ideas. Anyone done this before?
>
> > > > > > > > On Feb 13, 4:35 pm, David <cont...@akamarketing.com> wrote:
>
> > > > > > > > > CampaignCriterionIdFilter[] ccIDfilters = new
> > > > > > > > > CampaignCriterionIdFilter[1];
> > > > > > > > > ccIDfilters[0].campaignId = campaignID;
> > > > > > > > > ccIDfilters[0].campaignIdSpecified = true;  //CRASH HERE - 
> > > > > > > > > ccIDfilters
> > > > > > > > > gives null reference exception...
> > > > > > > > >  ccs.idFilters = ccIDfilters;
>
> > > > > > > > > CampaignCriterion[] criterions =
> > > > > > > > > (CampaignCriterion[])campaignCriterionService.get(ccs).entries;
>
> > > > > > > > > What gives? I created a new filter array with space for one
> > > > > > > > > campaignID, set that id and the associated the filter array 
> > > > > > > > > with the
> > > > > > > > > overal selector..
>
> > > > > > > > > Any input is greatly appreciated.
>
> > > > > > > > > On Feb 13, 4:18 pm, David <cont...@akamarketing.com> wrote:
>
> > > > > > > > > > Hi there,
> > > > > > > > > > can anyone tell me how to get negative keywords for a 
> > > > > > > > > > campaign with a
> > > > > > > > > > given campaignID from the v2009 API. I can't seem to 
> > > > > > > > > > properly
> > > > > > > > > > associate filters with campaignCriterionSelector? Here my 
> > > > > > > > > > code
> > > > > > > > > > excerpt. I've tried a couple of variations of
> > > > > > > > > > CampaignCriterionIdFilter related code but idFilter of the 
> > > > > > > > > > ccs object
> > > > > > > > > > is always null. My campaignID does contain the id of a 
> > > > > > > > > > campaign and is
> > > > > > > > > > not null itself.
>
> > > > > > > > > > AdWordsUser user = new AdWordsUser(headers);
> > > > > > > > > >         CampaignCriterionService campaignCriterionService =
> > > > > > > > > > (CampaignCriterionService)user.GetService(AdWordsService.v200909.CampaignCr...
>
> read more »

-- 
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-...@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.

Reply via email to