سرویس AdSense

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

مرجع

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

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

کد نمونه

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

فهرست حساب‌ها

این نمونه تمام حساب‌های کاربری موجود برای کاربر را فهرست می‌کند. حساب‌ها به صورت نام‌های منبع مشخص شده‌اند، برای مثال، accounts/pub-12345 ، که می‌توانند در روش‌های دیگر، مانند فهرست کردن مشتریان تبلیغات ، استفاده شوند. به استفاده از توکن‌های صفحه برای دسترسی به لیست کامل نتایج توجه کنید.

پیشرفته/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 . می‌توانید نام منبع حساب را با استفاده از کد نمونه List accounts دریافت کنید.

پیشرفته/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 . می‌توانید نام منبع کلاینت تبلیغاتی را با استفاده از کد نمونه List ad clients دریافت کنید.

پیشرفته/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 شما ایجاد می‌کند و نتایج را در یک صفحه گسترده نمایش می‌دهد.

پیشرفته/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(),
  };
}