Search Ads 360 Reporting API cũ đã ngừng hoạt động. Giờ đây, bạn có thể tạo báo cáo bằng API Báo cáo Search Ads 360 mới.
Xin lưu ý rằng các phương thức get và getByCustomerId trong Search Ads 360 Conversion API sẽ ngừng hoạt động trong quý 3 năm 2025. Để tiếp tục truy cập vào dữ liệu lượt chuyển đổi, bạn phải tạo báo cáo bằng tài nguyên lượt chuyển đổi thông qua Search Ads 360 Reporting API mới. Xem thêm thông tin chi tiết tại đây.
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Sau khi thiết lập xong mọi thứ, hãy đảm bảo bạn có thể gửi mẫu
yêu cầu API Search Ads 360. Mã mẫu sau đây minh hoạ cách
gửi yêu cầu không đồng bộ
để biết danh sách các chiến dịch thuộc nhà quảng cáo của bạn. Nếu yêu cầu
thành công, bạn sẽ nhận được phản hồi từ API Search Ads 360 cho biết rằng báo cáo đã được tạo
nhưng chưa sẵn sàng (vì các yêu cầu không đồng bộ cần thêm các yêu cầu khác để
tải một báo cáo xuống).
Bạn cần chỉ định mã truy cập OAuth 2.0 và mã công ty quảng cáo của riêng bạn trong
yêu cầu. Cách tìm mã đại lý:
Mã đại lý và mã nhận dạng nhà quảng cáo của bạn sẽ xuất hiện trong URL, ngay sau thẻ
Tiền tố ay= và av=. Ví dụ: https://searchads.google.com/ds/cm/cm/cm/cm#campaigns.ay=123456789012345678;av=123456789012345678;
Sao chép đối tượng JSON mẫu (mọi thông tin nằm trong khoảng từ đến bao gồm cả hai đối tượng này)
dấu ngoặc nhọn) vào tệp văn bản mới có tên request.txt.
Thay đổi mã đại lý trong mã JSON thành mã đại lý của riêng bạn.
Hãy xoá mọi nhận xét, chẳng hạn như // The date column segments the report by individual days.
Tập hợp thông tin đăng nhập OAuth 2.0 của bạn thành một chuỗi được phân tách bằng dấu phẩy dưới dạng
sau: client-ID,client-secret,refresh-token
(Đây chính là chuỗi mà sa360Api.py xuất ra khi bạn chạy sa360Api.py
--login như mô tả trong phần Thiết lập
Uỷ quyền.)
Gọi sa360Api.py như sau: sa360Api.py --cred
CREDENTIALS --server API-method --post < request.txt
Trong lệnh trên, hãy thay thế chuỗi bạn đã tập hợp ở bước trước cho CREDENTIALS.
Thay thế tên của phương thức POST trong hộp bên dưới cho API-method.
importcom.google.api.client.googleapis.json.GoogleJsonError.ErrorInfo;importcom.google.api.client.googleapis.json.GoogleJsonResponseException;importcom.google.api.services.doubleclicksearch.Doubleclicksearch;importcom.google.api.services.doubleclicksearch.model.ReportApiColumnSpec;importcom.google.api.services.doubleclicksearch.model.ReportRequest;importcom.google.api.services.doubleclicksearch.model.ReportRequest.ReportScope;importcom.google.api.services.doubleclicksearch.model.ReportRequest.TimeRange;importjava.io.IOException;importjava.util.Arrays;/***Createsacampaignreportrequest,submitsthereport,andreturnsthereportID.*/privatestaticStringcreateReport(Doubleclicksearchservice)throwsIOException{try{returnservice.reports().request(createSampleRequest()).execute().getId();}catch(GoogleJsonResponseExceptione){System.err.println("Report request was rejected.");for(ErrorInfoerror:e.getDetails().getErrors()){System.err.println(error.getMessage());}System.exit(e.getStatusCode());returnnull;//Unreachablecode.}}/***ReturnsasimplestaticrequestthatliststheIDandnameofall*campaignsunderagency20100000000000895andadvertiser21700000000011523.*SubstituteyourownagencyIDandadvertiserIDsfortheIDsinthissample.*/privatestaticReportRequestcreateSampleRequest(){returnnewReportRequest().setReportScope(newReportScope().setAgencyId(20100000000000895L)//ReplacewithyourID.setAdvertiserId(21700000000011523L))//ReplacewithyourID.setReportType("campaign").setColumns(Arrays.asList(newReportApiColumnSpec[]{newReportApiColumnSpec().setColumnName("campaignId"),newReportApiColumnSpec().setColumnName("campaign")})).setTimeRange(newTimeRange().setStartDate("2014-05-01").setEndDate("2014-05-01")).setDownloadFormat("csv").setStatisticsCurrency("usd").setMaxRowsPerFile(5000000);}
defgenerate_report(service):"""Generate and print sample report. Args: service: An authorized Doubleclicksearch service. See Set Up Your Application. """request=service.reports().request(body={"reportScope":{"agencyId":"your agency ID","advertiserId":"your advertiser ID"},"reportType":"campaign","columns":[{"columnName":"campaignId"},{"columnName":"campaign"}],"downloadFormat":"csv","maxRowsPerFile":6000000,"statisticsCurrency":"agency"})pprint.pprint(request.execute())
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2024-08-21 UTC."],[[["\u003cp\u003eThis page guides you through sending a test request to the Search Ads 360 API to confirm your setup.\u003c/p\u003e\n"],["\u003cp\u003eThe example request fetches a list of campaigns under a specified advertiser and agency, returning a confirmation upon success.\u003c/p\u003e\n"],["\u003cp\u003eYou need to replace placeholder values with your actual agency and advertiser IDs, along with your OAuth 2.0 access token.\u003c/p\u003e\n"],["\u003cp\u003eCode samples in JSON, Java, .NET, and Python demonstrate how to construct and send the API request using different methods.\u003c/p\u003e\n"],["\u003cp\u003eFor successful execution, utilize the provided Search Ads 360 utility script or adapt the code samples to your environment.\u003c/p\u003e\n"]]],["The core content demonstrates sending an asynchronous request to the Search Ads 360 API to list campaigns under a specified advertiser. This involves using an OAuth 2.0 access token and agency ID. The request, illustrated in JSON, Java, .NET, and Python, defines the report scope, type (campaign), columns (campaignId, campaign), format (csv), and other parameters. It uses either the Search Ads 360 utility script or direct `POST` method. Successful requests return a report creation confirmation, with further requests needed to access the full report.\n"],null,["# Send a Sample Request\n\nAfter you've set everything up, make sure you can successfully send a sample\nrequest to the Search Ads 360 API. The following code sample demonstrates how to\nsend an [asynchronous request](/search-ads/v2/how-tos/reporting/asynchronous-requests)\nfor the list of campaigns under your advertiser. If the request\nis successful, you'll get a response from the Search Ads 360 API saying that the report is created\nbut not ready (this is because asynchronous requests require additional requests to\nactually download a report).\n\n\nYou'll need to specify your own OAuth 2.0 access token and your own agency ID in\nthe request. To find your agency ID:\n\n1. Visit the [Search Ads 360 UI](http://searchads.google.com/ds/cm/cm/).\n2. Your agency and advertiser IDs are displayed in the URL, just after the `ay=` and `av=` prefix. For example: \n `https://searchads.google.com/ds/cm/cm/cm/cm#campaigns.ay=`**123456789012345678** `;av=`**123456789012345678**`;`\n\n### JSON\n\n```gdscript\nPOST https://www.googleapis.com/doubleclicksearch/v2/reports\nAuthorization: Bearer your OAuth 2.0 access token\nContent-type: application/json\n\n{\n \"reportScope\": {\n \"agencyId\": \"your agency ID\",\n \"advertiserId\": \"your advertiser ID\"\n },\n \"reportType\": \"campaign\",\n \"columns\": [\n { \"columnName\": \"campaignId\" },\n { \"columnName\": \"campaign\" }\n ],\n \"downloadFormat\": \"csv\",\n \"maxRowsPerFile\": 6000000,\n \"statisticsCurrency\": \"agency\"\n}\n```\n\n#### Use the Search Ads 360 utility script to send this request\n\n\nTo send a raw JSON POST request, you can use the [sa360Api.py\nscript](/search-ads/v2/prereqs#ds3py) as follows:\n\n1. Copy the example JSON object (everything between and including the two curly brackets) into a new text file named `request.txt`.\n2. Change the agency ID that's in the JSON code to your own agency ID.\n3. Remove any comments, such as `// The date column segments the report by individual days.`\n4. Assemble your OAuth 2.0 credentials into a single, comma-delimited string as follows: \n `client-ID,client-secret,refresh-token` \n (This is the same string that `sa360Api.py` outputs when you run `sa360Api.py\n --login` as described in [Set Up\n Authorization](/search-ads/v2/authorizing).)\n5. Invoke `sa360Api.py` as follows: \n `sa360Api.py --cred\n `*CREDENTIALS*` --server `*API-method*` --post \u003c request.txt\n ` \n In the command above, substitute the string you assembled in the previous step for *CREDENTIALS*. \n Substitute the name of the POST method in the box below for *API-method*.\n\n\n For example: \n `sa360Api.py --cred\n 123456789123.apps.googleusercontent.com,ABCDEFGHIJKLMNOPQR_abcdef,1/HIJklM01OPQR23NOP456rst890uvw\n --server https://www.googleapis.com/doubleclicksearch/v2/reports/generate --post \u003c request.txt`\n\n### Java\n\n```python\nimport com.google.api.client.googleapis.json.GoogleJsonError.ErrorInfo;\nimport com.google.api.client.googleapis.json.GoogleJsonResponseException;\nimport com.google.api.services.doubleclicksearch.Doubleclicksearch;\nimport com.google.api.services.doubleclicksearch.model.ReportApiColumnSpec;\nimport com.google.api.services.doubleclicksearch.model.ReportRequest;\nimport com.google.api.services.doubleclicksearch.model.ReportRequest.ReportScope;\nimport com.google.api.services.doubleclicksearch.model.ReportRequest.TimeRange;\n\nimport java.io.IOException;\nimport java.util.Arrays;\n\n /**\n * Creates a campaign report request, submits the report, and returns the report ID.\n */\n private static String createReport(Doubleclicksearch service) throws IOException {\n try {\n return service.reports().request(createSampleRequest()).execute().getId();\n } catch (GoogleJsonResponseException e) {\n System.err.println(\"Report request was rejected.\");\n for (ErrorInfo error : e.getDetails().getErrors()) {\n System.err.println(error.getMessage());\n }\n System.exit(e.getStatusCode());\n return null; // Unreachable code.\n }\n }\n\n /**\n * Returns a simple static request that lists the ID and name of all\n * campaigns under agency 20100000000000895 and advertiser 21700000000011523.\n * Substitute your own agency ID and advertiser IDs for the IDs in this sample.\n */\n private static ReportRequest createSampleRequest() {\n return new ReportRequest()\n .setReportScope(new ReportScope()\n .setAgencyId(20100000000000895L) // Replace with your ID\n .setAdvertiserId(21700000000011523L)) // Replace with your ID\n .setReportType(\"campaign\")\n .setColumns(Arrays.asList(\n new ReportApiColumnSpec[] {\n new ReportApiColumnSpec().setColumnName(\"campaignId\"),\n new ReportApiColumnSpec().setColumnName(\"campaign\")\n }))\n .setTimeRange(new TimeRange()\n .setStartDate(\"2014-05-01\")\n .setEndDate(\"2014-05-01\"))\n .setDownloadFormat(\"csv\")\n .setStatisticsCurrency(\"usd\")\n .setMaxRowsPerFile(5000000);\n }\n```\n\n### .NET\n\n```gdscript\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Threading;\n\nusing Google.Apis.Auth.OAuth2;\nusing Google.Apis.Auth.OAuth2.Flows;\nusing api = Google.Apis.Doubleclicksearch.v2;\n\n/// \u003csummary\u003e\n/// Creates a campaign report request, submits the report, and returns the report ID.\n/// \u003c/summary\u003e\n/// \u003cparam name=\"service\"\u003eSearch Ads API service.\u003c/param\u003e\nprivate static string CreateReport(api.DoubleclicksearchService service)\n{\n var req = service.Reports.Request(CreateSampleRequest());\n var report = req.Execute();\n Console.WriteLine(\"Created report: ID={0}\", report.Id);\n return report.Id;\n}\n\n/// \u003csummary\u003e\n/// Returns a simple static request that lists the ID and name of all\n/// campaigns under agency 20100000000000895 and advertiser 21700000000011523.\n/// Substitute your own agency ID and advertiser IDs for the IDs in this sample.\n/// \u003c/summary\u003e\nprivate static api.Data.ReportRequest CreateSampleRequest()\n{\n return new api.Data.ReportRequest\n {\n ReportScope = new api.Data.ReportRequest.ReportScopeData\n {\n AgencyId = 20100000000000895,\n AdvertiserId = 21700000000011523,\n },\n ReportType = \"campaign\",\n Columns = new List\u003capi.Data.ReportRequest.ColumnsData\u003e\n {\n new api.Data.ReportRequest.ColumnsData\n {\n ColumnName = \"campaignId\",\n },\n new api.Data.ReportRequest.ColumnsData\n {\n ColumnName = \"campaign\",\n },\n },\n TimeRange = new api.Data.ReportRequest.TimeRangeData\n {\n StartDate = \"2014-01-01\",\n EndDate = \"2014-01-31\",\n },\n DownloadFormat = \"csv\",\n StatisticsCurrency = \"usd\",\n MaxRowsPerFile = 5000000,\n };\n}\n```\n\n### Python\n\n```gdscript\ndef generate_report(service):\n \"\"\"Generate and print sample report.\n\n Args:\n service: An authorized Doubleclicksearch service. See /search-ads/v2/configure.\n \"\"\"\n request = service.reports().request(\n body =\n {\n \"reportScope\": {\n \"agencyId\": \"your agency ID\",\n \"advertiserId\": \"your advertiser ID\"\n },\n \"reportType\": \"campaign\",\n \"columns\": [\n { \"columnName\": \"campaignId\" },\n { \"columnName\": \"campaign\" }\n ],\n \"downloadFormat\": \"csv\",\n \"maxRowsPerFile\": 6000000,\n \"statisticsCurrency\": \"agency\"\n }\n )\n\n pprint.pprint(request.execute())\n```"]]