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 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 về API Quản lý AdSense. 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ác đối tượng, phương thức và tham số giống như API công khai. Để biết thêm thông tin, hãy xem phần Cách xác định chữ ký phương thức.

Để báo cáo vấn đề và tìm các dịch vụ hỗ trợ khác, vui lòng đặt câu hỏi trên Stack Overflow bằng cách sử dụ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ể sử dụng. Các tài khoản được chỉ định là tên tài nguyên, ví dụ: accounts/pub-12345, có thể được sử dụng trong các phương thức khác, chẳng hạn như liệt kê ứ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 đủ 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ê ứng dụng quảng cáo

Mẫu này liệt kê tất cả ứng dụng quảng cáo cho một tài khoản nhất định. Chỉ định tài khoản dưới dạng 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 List accounts (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ê đơn vị quảng cáo

Mẫu này liệt kê tất cả cá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 quảng cáo bằng cách sử dụng mã mẫu Danh sách ứng dụng 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ả sang 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()
  };
}