Hello Qu,
You'd need to run an Ad Group report to get CTR for ad groups unless
you calculated it manually by getting stats for each ad in each ad
group and aggregate them, but that's not very straightforward. The
start and end dates that you specify in your DefinedReportJob don't
have to correspond to the start and end dates of the campaigns in
which the ad groups belong--you can specify a start date earlier than
the earliest campaign in your account, and an end date of today, and
get stats even for ad groups that belong to campaigns that started
later than the start date in your DefinedReportJob.
Quality score can be retrieve in v13 of the API as a property of the
Keyword object:
http://code.google.com/intl/en/apis/adwords/docs/developer/Keyword.html#qualityScore
which you can retrieve with a CriterionService.getAllCriteria() call,
or, more straightforward, by running a Keyword report.
CTR for Ads can be calculated via the AdService.getAdStats() call, or
via a Creative report.
I think that with potentially thousands of ad groups, you're going to
have the best results by using AdWords API reports.
Cheers,
-Jeff Posnick, AdWords API Team