سرویس AdSense

سرویس AdSense به شما امکان می دهد از API مدیریت AdSense در Apps Script استفاده کنید. این API به مشتریان AdSense این امکان را می دهد که اطلاعاتی در مورد ساختار حساب خود دریافت کنند و گزارش هایی را در مورد نحوه عملکرد آن اجرا کنند.

ارجاع

برای اطلاعات دقیق در مورد این سرویس، به مستندات مرجع برای API مدیریت AdSense مراجعه کنید. مانند همه سرویس‌های پیشرفته در Apps Script، سرویس AdSense از همان اشیا، روش‌ها و پارامترهای API عمومی استفاده می‌کند. برای اطلاعات بیشتر، نحوه تعیین امضای روش را ببینید.

برای گزارش مشکلات و یافتن پشتیبانی دیگر، لطفاً با استفاده از تگ adsense-api از Stack Overflow سؤال کنید.

کد نمونه

کد نمونه زیر از نسخه 2 API استفاده می کند.

فهرست حساب ها

این نمونه تمام حساب های موجود در دسترس کاربر را فهرست می کند. حساب‌ها به‌عنوان نام منابع مشخص می‌شوند، به‌عنوان مثال، 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);
}

گزارش ایجاد کنید

این نمونه گزارشی را روی حساب AdSense شما ایجاد می‌کند و نتایج را به صفحه‌گسترده ارائه می‌کند.

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