首页 > 解决方案 > Google 表格中的问题集成 Adsense

问题描述

我可以使用脚本编辑器在现有工作表中添加脚本并提供对 AdSense API 的访问权限,如官方文档中所述:AdSense Management API。在脚本编辑器中启用 AdSense API 后,第一次执行generateReport()函数时,它会请求提供权限,如果获得许可,它会创建一个包含 AdSense 报告的新工作表。

这是代码,如果一切正常,函数将返回一个测试编号(在本例中为 55):

/**
* Returns a test number.
*
* @return {Number} a test number.
* @customfunction
*/

function generateReport() {    
    var adClientId="XXXXXXXXXX"
    // Prepare report.
    var today = new Date();
    var oneWeekAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);

    var timezone = Session.getTimeZone();
    var startDate = Utilities.formatDate(oneWeekAgo, timezone, 'yyyy-MM-dd');
    var endDate = Utilities.formatDate(today, timezone, 'yyyy-MM-dd');

    var report = AdSense.Reports.generate(startDate, startDate, {
      // Specify the desired ad client using a filter.
      filter: ['AD_CLIENT_ID==' + escapeFilterParameter(adClientId)],
      metric: ['PAGE_VIEWS', 'AD_REQUESTS', 'AD_REQUESTS_COVERAGE', 'CLICKS',
               'AD_REQUESTS_CTR', 'COST_PER_CLICK', 'AD_REQUESTS_RPM',
               'EARNINGS'],
      dimension: ['DATE'],
      // Sort by ascending date.
      sort: ['+DATE']
    });

    if (report.rows) {
      var spreadsheet = SpreadsheetApp.create('AdSense Report');
      var sheet = spreadsheet.getActiveSheet();

      // Append the headers.
      var headers = report.headers.map(function(header) {
        return header.name;
      });
      sheet.appendRow(headers);

      // Append the results.
      sheet.getRange(2, 1, report.rows.length, headers.length)
      .setValues(report.rows);

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

      return 55;
    } else {
      Logger.log('No rows returned.');
    }
}

但是,如果我尝试在现有工作表而不是脚本编辑器中执行相同的功能,则该功能将失败,报告调用generateReport()并在 AdSense 中访问报告需要登录。要访问工作表中的函数,请双击一个单元格并使用=generateReport()调用该函数,但登录问题导致执行失败。

我在工作表中找不到任何地方来提供对 AdSense API 的访问,因为它是在脚本编辑器上创建的,那么如何授予权限?

标签: apigoogle-apps-scriptgoogle-sheetsadsense

解决方案


推荐阅读