Thanks Eric, yes I understand that - but what I was really asking was
"what is the fastest
way to upload 300,000 keywords?".

In other words - is the ADWORDS API the fastest way to do it, or is
there some other form
of transfer that I can use?

Currently 300,000 keywords is taking me nearly 12 hours to upload -
which is not an acceptable
performance level for my customer.

Our business want to operate in a much more dynamic way with ADWORDS,
and we were hoping the API
would be a way to accomplish that, but so far it's looking like -
while the flexibility and
the potential to automate is there - that we are prevented from
scaling up due to the performance.

Any pointers you can provide would be like water to a dry duck at this
stage.

Thanks,
Bobby


On Aug 6, 10:12 pm, AdWords API Advisor <adwordsapiadvi...@google.com>
wrote:
> Hi Bobby,
>
> The BulkMutateJobService does not offer any speed benefits over the
> regular synchronous services.  There is the possibility of concurrent
> processing of operations, but in general you shouldn't assume that
> operations will process any faster using the BMJS.  The BMJS is
> designed for uploading large numbers of entities, such as keywords and
> ads, but it should not be used for time-sensitive changes.
>
> Best,
> - Eric Koleda, AdWords API Team
>
> On Aug 5, 8:43 am, bobby healy <robertjohnpatrickhe...@googlemail.com>
> wrote:
>
>
>
> > OK, I've searched everywhere and there doesn't seem to be a single,
> > definitive answer to this question-:
>
> > "How do I bulk upload about 300,000 keywords as quickly as possible ?"
>
> > Currently this takes me about 24 hours using the following code. Is
> > there any faster way to do this ?
>
> >                 AdGroupAd textAdGroupAd = new AdGroupAd();
>
> > textAdGroupAd.setAdGroupId(g.getAdGroupID());
> > textAdGroupAd.setAd(textAd);
> >                     AdGroupAdOperation textAdGroupAdOperation = new
> > AdGroupAdOperation();
> >                     textAdGroupAdOperation.setOperand(textAdGroupAd);
> >                     textAdGroupAdOperation.setOperator(Operator.ADD);
> >                    ... add some exemptions....
> >                     l.adGroupAdOperations.add(textAdGroupAdOperation);
> >                 BulkMutateJobServiceInterface bulkMutateJobService =
> > user.getService(
>
> > AdWordsService.V201003.BULK_MUTATE_JOB_SERVICE);
> >                 // Set scope of jobs.
> >                 EntityId scopingEntityId = new
> > EntityId(EntityIdType.CAMPAIGN_ID, c.getCampaignID());
> >                 long jobId = createAndBeginJob(bulkMutateJobService,
> > scopingEntityId, e.getValue().adGroupAdOperations.toArray(new
> > AdGroupAdOperation[0]));
> >                 OperationResult[] operationResults =
> > retrieveResultsFromJob(bulkMutateJobService, jobId, null);
>
> >     private static OperationResult[] retrieveResultsFromJob(
> >             BulkMutateJobServiceInterface bulkMutateJobService, long
> > jobId, ProgressDialog p)
> >             throws InterruptedException, IOException {
> >         List<OperationResult[]> operationResultsByPart = new
> > ArrayList<OperationResult[]>();
> >         BulkMutateJob job = null;
>
> >         // Create selector.
> >         BulkMutateJobSelector selector = new BulkMutateJobSelector();
> >         selector.setJobIds(new long[]{jobId});
>
> >         // Loop while waiting for the job to complete.
> >         int percent = 1;
> >         do {
> >             BulkMutateJob[] jobs = bulkMutateJobService.get(selector);
> >             job = jobs[0];
>
> >             System.out.println("Bulk mutate job with id \"" +
> > job.getId() + "\" has status \"" + job.getStatus() + "\".");
>
> >             if (job.getStatus().equals(BasicJobStatus.PENDING) ||
> > job.getStatus().equals(BasicJobStatus.PROCESSING)) {
> >                 if (p != null)
> >                     p.setProgress(percent++);
> >                 Thread.sleep(10000);
> >             }
> >         } while (job.getStatus().equals(BasicJobStatus.PENDING) ||
> > job.getStatus().equals(BasicJobStatus.PROCESSING));
>
> > ************* the above WHILE loop is where it spends all it's time -
> > PROCESSING for hours...****************
>
> >         if (job.getStatus() == BasicJobStatus.FAILED) {
> >             throw new ApiException("Job failed.", null, null);
> >         }
>
> >         for (int i = 0; i < job.getNumRequestParts(); i++) {
> >             // Set selector to retrieve results for part.
> >             selector.setResultPartIndex(i);
> >             BulkMutateJob jobWithResult =
> > bulkMutateJobService.get(selector)[0];

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

Reply via email to