Skip to main content

Sample codes in Python

Zuora
  • 日本語のコンテンツは機械翻訳されており、補助的な参照を目的としています。機械翻訳の精度は保証できません。英語版が正となります。また、現時点では検索機能は日本語での検索をサポートしていません。翻訳に関するフィードバックについては、docs@zuora.comに送信してください。

Sample codes in Python

The following are the sample codes in Python to download the BI view.

01def download(view_name, field_list, page_number, page_size, output_type, client_id, all_pages,
02             from_page, to_page, from_date, to_date, retry_interval,
03             retry_attempt, use_token, output, max_pages, directory):
04    """Download bi view"""
05    if page_number is not None:
06        from_page = page_number
07        to_page = page_number
08    o_start = time.time()
09    request_id = use_token
10    from prettytable import PrettyTable
11    x = PrettyTable()
12    x.field_names = ["Page Number",
13                     "Duration", "Attempt", "Response Code"]
14    end_point_host = "https://my-tenant.revprooncloud.com/api"
15    for pg in range(from_page, to_page + 1):
16        from os import system, name
17        p_start = time.time()
18        import requests
19        token, _ = get_token()
20        if request_id is not None:
21            headers = {'Token': token,
22                       'continuation-token': request_id}
23        else:
24            headers = {'Token': token}
25        params = []
26        params.append(make_query_param("clientId", client_id))
27        params.append(make_query_param("fromDate", from_date))
28        params.append(make_query_param("toDate", to_date))
29        params.append(make_query_param("pagenum", pg))
30        params.append(make_query_param("pageSize", page_size))
31        params.append(make_query_param("outputType", output_type))
32        if max_pages is not None:
33            params.append(make_query_param("max_pages", max_pages))
34  
35        query_string = ""
36        for a in params:
37            query_string = query_string + a + "&"
38        url = end_point_host + \
39            '/integration/v2/biviews/{0}?{1}'.format(view_name, query_string)
40  
41        import jsonpickle
42        field = []
43        if field_list is not None:
44            field = field_list.split(",")
45        post_response = requests.get(url, data=jsonpickle.encode(field), headers=headers)
46  
47        attempt = 1
48        if post_response.status_code != 200:
49            if "Page still not yet cached" in post_response.text:
50                for _ in range(1, retry_attempt):
51                    attempt = attempt + 1
52                    time.sleep(retry_interval)
53                    post_response = requests.get(
54                        end_point_host + '/integration/v2/biviews/{0}?{1}'.format(view_name, query_string), headers=headers)
55                    if post_response.status_code == 200:
56                        break
57                if post_response.status_code != 400:
58                    print("Stopping.")
59                    break
60        if request_id is None:
61            if 'continuation_token' in post_response.headers:
62                request_id = post_response.headers.get('continuation_token')
63                print("Continuation Token: {0}".format(request_id))
64        else:
65            print('No Token found!')
66        p_end = time.time()
67        elapsed = round(p_end - p_start)
68  
69        if output == "file" and directory is not None:
70            write_to_file(directory, pg, post_response.text)
71  
72        x.add_row([pg, elapsed, attempt, post_response.status_code])
73        print(x)
74        print("Continuation Token: {0}".format(request_id))
75  
76        if post_response.status_code != 200:
77            print("Stopping. Code: {0}".format(post_response.status_code))
78            break
79    o_end = time.time()
80    elapsed = round(o_end - o_start)
81    x.add_row(["Total", elapsed, '', ''])
82    print(x)
83    print("Continuation Token: {0}".format(request_id))