0

現在、GAレポートAPIを使用しようとしています。基本的に、クエリがインスタンス化されたときにすべてのパラメータを取得するQueryオブジェクトを作成しました。

ただし、クエリ自体の初期化でクエリの結果を取得したいと思います。クエリオブジェクトをquery_to_results(x)と呼ばれる結果のセットに変換するメソッドがあります。ここで、引数xはクエリオブジェクトです。

現在、空の結果パラメーターを使用してQueryオブジェクトを作成し、setterメソッドを使用して結果をクエリに追加しています。ただし、オブジェクトの作成の初期化中に結果を取得したいと思います。これを行う簡単な方法はありますか?

私は次の線に沿った何かを仮定します:

self.results = query_to_results(self)

これが機能しないことを除いて機能します。

これは、クエリオブジェクトを作成するためのコードですL

class Query(object):
    def __init__(self,number_of_date_ranges):
        self.segments = gw.get_segments()
        self.sites = gw.get_sites_for_query()
        self.dates = []
        self.service = gw.service
        self.dim_met = gw.get_arguments()
        self.dimensions = self.dim_met[0]
        self.metrics = self.dim_met[1]
        self.results = []
        for x in range (number_of_date_ranges):
            self.dates.append(gw.get_dates())
    def __str__(self):
        output_string = 'segments:'
        for x in self.segments:
            output_string += str(x)
        output_string += '\n\nsites:\n'
        for y in self.sites:
            output_string += str(y)
        output_string += '\n\ndates:\n' 
        for z in self.dates:
            output_string+=str(z.items())
        output_string += ('\n\n'+'dimensions:'+self.dimensions+'\n\n'+'metrics:\n'+self.metrics)
        return output_string
    def get_segments(self):
        return self.segments
    def get_sites(self):
        return self.sites
    def get_dates(self):
        return self.dates
    def get_dimensions(self):
        return self.dimensions
    def get_metrics(self):
        return self.metrics
    def get_service(self):
        return self.service
    def get_results(self):
        return self.results
    def set_results(self,query_object):
        self.results = query_to_results(query_object)

これは、オブジェクトを一連の結果に変換するためのコードです。

def get_results(service,profile_id,segment_id,date1,date2,dimensionString,metricString):
    try:
        return service.data().ga().get(
            ids='ga:' + profile_id,
            start_date=date1,
            end_date=date2,
            segment=segment_id,
            dimensions=dimensionString,
            metrics=metricString).execute()

def query_to_results(query_object):
    service = hello_analytics_api_v3_auth.initialize_service()
    accounts = service.management().accounts().list().execute()
    results_list = []
    parameters = extract_arguments(query_object)
    for site in parameters['profiles']:
        for segment in parameters['segments']:
            for dates in range (len(parameters['dates'])):
                results_list.append(get_results(service,site,segment,parameters['dates'][dates]['start'],parameters['dates'][dates]['end'],parameters['dimensions'],parameters['metrics']))
                time.sleep(0.5)
            time.sleep(0.1)
        time.sleep(0.1)
    time.sleep(0.1)
    return results_list


def extract_arguments(query_object):
    """Gets Arguments From Query Object. If no Segments given, assumes all visits. If no metrics given, assumes visits"""
    metricString = ''
    dimensionString = ''
    dateList = []
    segmentList = []
    webPropertyIdList = []
    for x in query_object.get_sites():
        webPropertyIdList.append(gw.site_name_to_true_webPropertyId[x])
    for y in query_object.get_segments():
        segmentList.append('gaid::'+str(y))
    for z in query_object.get_dates():
        dateList.append(z)
    if len(segmentList)==0:
        segmentList.append('gaid::-1')
    dimensionString = query_object.get_dimensions()
    metricString = query_object.get_metrics()
    if len(metricString)==0:
        metricString = 'ga:visits'
    return {"metrics":metricString,
            "dimensions":dimensionString,
            "dates":dateList,
            "segments":segmentList,
            "profiles":webPropertyIdList}
4

0 に答える 0