애드센스 서비스

애드센스 서비스를 사용하면 Apps Script에서 사용되는 애드센스 관리 API 이 API 애드센스 고객은 웹사이트의 구조에 대한 정보를 얻을 수 있습니다. 실적 보고서를 실행할 수 있습니다.

참조

이 서비스에 대한 자세한 내용은 애드센스 참조 문서 관리 API Apps Script의 모든 고급 서비스와 마찬가지로 애드센스 서비스도 는 공개 API와 동일한 객체, 메서드, 매개변수를 사용합니다. 자세한 내용은 메서드 서명 확인 방법을 참조하세요.

문제를 신고하고 기타 지원을 찾으려면 Stack Overflow에서 adsense-api 태그 사이에 있어야 합니다.

샘플 코드

아래의 샘플 코드는 버전 2를 사용합니다. 생성합니다.

계정 나열

이 샘플은 사용자가 사용할 수 있는 모든 계정을 나열합니다. 계정은 지정할 수 있는 리소스 이름(예: accounts/pub-12345)이며 다른 방법으로 사용(예: 광고 클라이언트 나열) 전체 결과 목록에 액세스합니다.

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);
}

광고 클라이언트 나열

이 샘플은 지정된 계정의 모든 광고 클라이언트를 나열합니다. 계정 지정 리소스 이름으로 사용(예: accounts/pub-12345) 계정을 만들 수 있습니다. 리소스 이름을 입력합니다.

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);
}

광고 단위 나열

이 샘플은 지정된 광고 클라이언트의 모든 광고 단위를 나열합니다. 광고 지정 클라이언트를 리소스 이름으로 사용합니다(예: accounts/pub-12345/adclients/ca-pub-12345). 광고 클라이언트 리소스 이름은 광고 클라이언트 나열 샘플 코드

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);
}

보고서 생성

이 샘플은 애드센스 계정에 대한 보고서를 생성하고 스프레드시트로 변환할 수 있습니다.

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()
  };
}