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.