Để thảo luận và đưa ra ý kiến phản hồi về các sản phẩm của chúng tôi, hãy tham gia kênh Discord chính thức của Google Ads trong máy chủ Cộng đồng quảng cáo và đo lường của Google.
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.
Báo cáo cung cấp thông tin về tất cả các tài nguyên trong tài khoản của bạn.
Bạn có thể tìm nạp thông tin về chiến dịch, nhóm quảng cáo và số liệu thống kê của các chiến dịch, nhóm quảng cáo đó, nhật ký thay đổi cho tài khoản của bạn và nhiều thông tin khác. Cơ sở hạ tầng báo cáo được hỗ trợ bởi API Google Ads và sử dụng GAQL để chỉ định những trường, chỉ số và điều kiện mà bạn muốn đặt.
Báo cáo so với tìm kiếm
Có 2 cơ chế báo cáo chính. Cả hai đều chấp nhận cùng một loại truy vấn và khác nhau chủ yếu ở cách chúng trả về kết quả.
Trong cả hai trường hợp, chúng ta sẽ sử dụng truy vấn sau:
Thao tác này sẽ trả về một bản trình bày dạng từ điển, đơn giản về kết quả tìm kiếm của bạn. Bạn có thể truy cập trực tiếp vào các trường như thể đang dùng một từ điển, chẳng hạn như row["campaign.id"] và row["metrics.impressions"]. Bằng cách sử dụng định dạng này, bạn có thể xuất trực tiếp kết quả sang bảng tính bằng phương thức exportToSheet(). Đây không phải là định dạng gốc mà Google Ads API trả về kết quả, vì vậy trong một số trường hợp, một số trường có thể không có sẵn ở định dạng này. Nếu vậy, bạn nên sử dụng search.
AdsApp.search()
Thao tác này sẽ trả về danh sách các đối tượng GoogleAdsRow, có nhiều trường, mỗi trường có thể có các trường phụ. Vì vậy, bạn sẽ truy cập vào row.campaign.id và row.metrics.impressions để tìm nạp dữ liệu. Điều này thường hữu ích hơn nếu bạn dự định xử lý dữ liệu theo cách lập trình và một số trường có thể chỉ có ở định dạng search nếu không thể chuyển đổi sang dạng biểu thị phẳng.
Ví dụ về báo cáo
letreport=AdsApp.report("SELECT "+" ad_group.id, search_term_view.search_term, metrics.ctr, metrics.cost_micros, metrics.impressions "+"FROM search_term_view "+"WHERE metrics.impressions < 10 AND segments.date DURING LAST_30_DAYS");letrows=report.rows();while(rows.hasNext()){letrow=rows.next();letquery=row["search_term_view.search_term"];letimpressions=row["metrics.impressions"];}
Hãy xem tài liệu AdsApp.report để biết thông tin chi tiết về cách sử dụng khung hiển thị này.
Ví dụ về tìm kiếm
letsearch=AdsApp.search("SELECT "+" ad_group.id, search_term_view.search_term, metrics.ctr, metrics.cost_micros, metrics.impressions "+"FROM search_term_view "+"WHERE metrics.impressions < 10 AND segments.date DURING LAST_30_DAYS");while(search.hasNext()){letrow=search.next();letquery=row.searchTermView.searchTerm;letimpressions=row.metrics.impressions;}
Tham khảo tài liệu đầy đủ về Adsapp.search để biết tất cả các chế độ cài đặt có thể có.
[null,null,["Cập nhật lần gần đây nhất: 2025-08-27 UTC."],[[["\u003cp\u003eGoogle Ads scripts reporting uses GAQL to specify the data you want to retrieve, allowing you to access information about various resources like campaigns and ad groups.\u003c/p\u003e\n"],["\u003cp\u003eThere are two primary reporting methods: \u003ccode\u003eAdsApp.report()\u003c/code\u003e, which provides a flat, dictionary-like output suitable for spreadsheets, and \u003ccode\u003eAdsApp.search()\u003c/code\u003e, which returns \u003ccode\u003eGoogleAdsRow\u003c/code\u003e objects for programmatic processing.\u003c/p\u003e\n"],["\u003cp\u003eBoth \u003ccode\u003eAdsApp.report()\u003c/code\u003e and \u003ccode\u003eAdsApp.search()\u003c/code\u003e accept the same GAQL queries but differ in how they present the results, with some fields potentially exclusive to one method.\u003c/p\u003e\n"],["\u003cp\u003eWhile \u003ccode\u003eAdsApp.report()\u003c/code\u003e uses dictionary-like access (e.g., \u003ccode\u003erow["campaign.id"]\u003c/code\u003e), \u003ccode\u003eAdsApp.search()\u003c/code\u003e leverages object properties (e.g., \u003ccode\u003erow.campaign.id\u003c/code\u003e) and uses \u003ccode\u003elowerCamelCase\u003c/code\u003e for field names regardless of the query's casing.\u003c/p\u003e\n"]]],[],null,["# Reporting\n\nReports provide information about all the different resources in your account.\nYou can fetch information about campaigns, ad groups, and their stats, change\nhistory for your account, and more. The reporting infrastructure is backed by\nthe Google Ads API and uses [GAQL](/google-ads/api/docs/query/overview) to specify\nwhat fields, metrics, and conditions you want to set.\n\nReport vs. search\n-----------------\n\nThere are two main mechanisms for reporting. They both accept the same kinds of\nqueries, and differ primarily in how they return the results.\n\nFor both cases, we will use the following query: \n\n SELECT\n campaign.id,\n campaign.status,\n metrics.clicks,\n metrics.impressions,\n customer.id\n FROM campaign\n WHERE\n metrics.impressions \u003e 0\n\n`AdsApp.report()`\n: This will return a flat, dictionary-like representation of your search\n results. You can access fields as if using a dictionary, such as\n `row[\"campaign.id\"]` and `row[\"metrics.impressions\"]` directly. By using this\n format, you can export the results directly to a spreadsheet using the\n `exportToSheet()` method. This is not the native format that results are\n returned in by the Google Ads API, so in some cases some fields may not be available\n in this format. If that is the case, you should use `search` instead.\n\n`AdsApp.search()`\n: This will return a list of `GoogleAdsRow` objects, which have various fields,\n each of which may have sub-fields. So you would access `row.campaign.id` and\n `row.metrics.impressions` to fetch the data. This is generally more useful if\n you plan to process the data programmatically, and some fields may only be\n available in the `search` format if they cannot be converted to a flat\n representation.\n| **Note:** When using `AdsApp.search`, the fields returned will be in `lowerCamelCase` even though they are specified in `underscore_case` in the query. For example, if your field in the query is `campaign.start_date`, then to fetch the result from the row, you would use `campaign.startDate`.\n\nReport Example\n--------------\n\n let report = AdsApp.report(\n \"SELECT \" +\n \" ad_group.id, search_term_view.search_term, metrics.ctr, metrics.cost_micros, metrics.impressions \" +\n \"FROM search_term_view \" +\n \"WHERE metrics.impressions \u003c 10 AND segments.date DURING LAST_30_DAYS\");\n\n let rows = report.rows();\n while (rows.hasNext()) {\n let row = rows.next();\n let query = row[\"search_term_view.search_term\"];\n let impressions = row[\"metrics.impressions\"];\n }\n\nTake a look at the\n[`AdsApp.report`](/google-ads/scripts/docs/reference/adsapp/adsapp#report_query-optArgs)\ndocumentation for full details on using this view.\n\nSearch Example\n--------------\n\n let search = AdsApp.search(\n \"SELECT \" +\n \" ad_group.id, search_term_view.search_term, metrics.ctr, metrics.cost_micros, metrics.impressions \" +\n \"FROM search_term_view \" +\n \"WHERE metrics.impressions \u003c 10 AND segments.date DURING LAST_30_DAYS\");\n\n while (search.hasNext()) {\n let row = search.next();\n let query = row.searchTermView.searchTerm;\n let impressions = row.metrics.impressions;\n }\n\nConsult the full\n[`Adsapp.search`](/google-ads/scripts/docs/reference/adsapp/adsapp#search_query-optArgs)\ndocumentation for all possible settings."]]