Dịch vụ AdSense

Dịch vụ AdSense cho phép bạn sử dụng API Quản lý AdSense trong Apps Script. API này cho phép khách hàng AdSense lấy thông tin về cấu trúc tài khoản của họ và chạy báo cáo về hiệu suất của tài khoản đó.

Tài liệu tham khảo

Để biết thông tin chi tiết về dịch vụ này, hãy xem tài liệu tham khảo cho AdSense Management API. Giống như tất cả các dịch vụ nâng cao trong Apps Script, dịch vụ AdSense sử dụng cùng các đối tượng, phương thức và tham số như API công khai. Để biết thêm thông tin, hãy xem bài viết Cách xác định chữ ký phương thức.

Để báo cáo vấn đề và tìm thông tin hỗ trợ khác, vui lòng đặt câu hỏi trên Stack Overflow bằng thẻ adsense-api.

Mã mẫu

Mã mẫu bên dưới sử dụng phiên bản 2 của API.

Liệt kê tài khoản

Mẫu này liệt kê tất cả tài khoản mà người dùng có thể truy cập. Các tài khoản được chỉ định dưới dạng tên tài nguyên, ví dụ: accounts/pub-12345. Bạn có thể dùng tên tài nguyên này trong các phương thức khác, chẳng hạn như liệt kê các ứng dụng quảng cáo. Lưu ý việc sử dụng mã thông báo trang để truy cập vào danh sách đầy đủ các kết quả.

advanced/adsense.gs
/**
 * Lists available AdSense accounts.
 */
function listAccounts() {
  let pageToken;
  do {
    const response = AdSense.Accounts.list({pageToken: pageToken});
    if (!response.accounts) {
      console.log('No accounts found.');
      return;
    }
    for (const account of response.accounts) {
      console.log('Found account with resource name "%s" and display name "%s".',
          account.name, account.displayName);
    }
    pageToken = response.nextPageToken;
  } while (pageToken);
}

Liệt kê các ứng dụng quảng cáo

Mẫu này liệt kê tất cả các khách hàng quảng cáo cho một tài khoản nhất định. Chỉ định tài khoản làm tên tài nguyên, ví dụ: accounts/pub-12345. Bạn có thể lấy tên tài nguyên tài khoản bằng cách sử dụng mã mẫu Liệt kê tài khoản.

advanced/adsense.gs
/**
 * Logs available Ad clients for an account.
 *
 * @param {string} accountName The resource name of the account that owns the
 *     collection of ad clients.
 */
function listAdClients(accountName) {
  let pageToken;
  do {
    const response = AdSense.Accounts.Adclients.list(accountName, {
      pageToken: pageToken
    });
    if (!response.adClients) {
      console.log('No ad clients found for this account.');
      return;
    }
    for (const adClient of response.adClients) {
      console.log('Found ad client for product "%s" with resource name "%s".',
          adClient.productCode, adClient.name);
      console.log('Reporting dimension ID: %s',
          adClient.reportingDimensionId ?? 'None');
    }
    pageToken = response.nextPageToken;
  } while (pageToken);
}

Liệt kê các đơn vị quảng cáo

Mẫu này liệt kê tất cả đơn vị quảng cáo cho một ứng dụng quảng cáo nhất định. Chỉ định ứng dụng quảng cáo làm tên tài nguyên, chẳng hạn như accounts/pub-12345/adclients/ca-pub-12345. Bạn có thể lấy tên tài nguyên ứng dụng khách quảng cáo bằng cách sử dụng mã mẫu Liệt kê ứng dụng khách quảng cáo.

advanced/adsense.gs
/**
 * Lists ad units.
 * @param {string} adClientName The resource name of the ad client that owns the collection
 *     of ad units.
 */
function listAdUnits(adClientName) {
  let pageToken;
  do {
    const response = AdSense.Accounts.Adclients.Adunits.list(adClientName, {
      pageSize: 50,
      pageToken: pageToken
    });
    if (!response.adUnits) {
      console.log('No ad units found for this ad client.');
      return;
    }
    for (const adUnit of response.adUnits) {
      console.log('Found ad unit with resource name "%s" and display name "%s".',
          adUnit.name, adUnit.displayName);
    }

    pageToken = response.nextPageToken;
  } while (pageToken);
}

Tạo báo cáo

Mẫu này tạo một báo cáo về tài khoản AdSense của bạn và xuất kết quả vào một bảng tính.

advanced/adsense.gs
/**
 * Generates a spreadsheet report for a specific ad client in an account.
 * @param {string} accountName The resource name of the account.
 * @param {string} adClientReportingDimensionId The reporting dimension ID
 *     of the ad client.
 */
function generateReport(accountName, adClientReportingDimensionId) {
  // Prepare report.
  const today = new Date();
  const oneWeekAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);

  const report = AdSense.Accounts.Reports.generate(accountName, {
    // Specify the desired ad client using a filter.
    filters: ['AD_CLIENT_ID==' + escapeFilterParameter(adClientReportingDimensionId)],
    metrics: ['PAGE_VIEWS', 'AD_REQUESTS', 'AD_REQUESTS_COVERAGE', 'CLICKS',
      'AD_REQUESTS_CTR', 'COST_PER_CLICK', 'AD_REQUESTS_RPM',
      'ESTIMATED_EARNINGS'],
    dimensions: ['DATE'],
    ...dateToJson('startDate', oneWeekAgo),
    ...dateToJson('endDate', today),
    // Sort by ascending date.
    orderBy: ['+DATE']
  });

  if (!report.rows) {
    console.log('No rows returned.');
    return;
  }
  const spreadsheet = SpreadsheetApp.create('AdSense Report');
  const sheet = spreadsheet.getActiveSheet();

  // Append the headers.
  sheet.appendRow(report.headers.map((header) => header.name));

  // Append the results.
  sheet.getRange(2, 1, report.rows.length, report.headers.length)
      .setValues(report.rows.map((row) => row.cells.map((cell) => cell.value)));

  console.log('Report spreadsheet created: %s',
      spreadsheet.getUrl());
}

/**
 * Escape special characters for a parameter being used in a filter.
 * @param {string} parameter The parameter to be escaped.
 * @return {string} The escaped parameter.
 */
function escapeFilterParameter(parameter) {
  return parameter.replace('\\', '\\\\').replace(',', '\\,');
}

/**
 * Returns the JSON representation of a Date object (as a google.type.Date).
 *
 * @param {string} paramName the name of the date parameter
 * @param {Date} value the date
 * @return {object} formatted date
 */
function dateToJson(paramName, value) {
  return {
    [paramName + '.year']: value.getFullYear(),
    [paramName + '.month']: value.getMonth() + 1,
    [paramName + '.day']: value.getDate()
  };
}