You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Google Apps Script调用Search Console API获取数据失败求助

解决Google Apps Script访问Search Console数据的问题

你的两段代码问题排查

第一段gapi代码的问题

这段是浏览器端JavaScript的写法,Google Apps Script是服务器端运行环境,根本不支持gapi.auth2、gapi.client这类浏览器API,完全没法在GAS里跑。

第二段UrlFetch代码的问题

  1. 参数放错地方:startDate、endDate是查询请求的核心参数,得放在请求体里,不是HTTP头里
  2. 格式错误:contentType是UrlFetchApp的配置项,不属于请求头字段
  3. 日期笔误:20019-10-01多写了一个0,应该是2019-10-01
  4. 站点URL格式不对:[SITE_URL]要替换成Search Console里注册的完整站点地址,比如https://www.your-domain.com/(必须带末尾斜杠)
  5. 缺OAuth2授权实现:getService()函数没定义,GAS访问Search Console必须通过OAuth2完成授权

正确实现步骤

1. 安装OAuth2库

在GAS编辑器里,点击「资源」→「库」,输入库ID 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF,选最新版本添加。

2. 完整可运行代码

// 初始化OAuth2授权服务
function getService() {
  return OAuth2.createService('SearchConsole')
    .setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth')
    .setTokenUrl('https://accounts.google.com/o/oauth2/token')
    .setClientId('你的客户端ID') // 从Google Cloud控制台获取
    .setClientSecret('你的客户端密钥') // 从Google Cloud控制台获取
    .setCallbackFunction('authCallback')
    .setScope('https://www.googleapis.com/auth/webmasters.readonly')
    .setCache(CacheService.getUserCache())
    .setPropertyStore(PropertiesService.getUserProperties());
}

// 授权回调处理
function authCallback(request) {
  var isAuthorized = getService().handleCallback(request);
  return HtmlService.createHtmlOutput(isAuthorized ? '授权成功!' : '授权失败!');
}

// 触发授权(首次运行必须执行)
function authorize() {
  var service = getService();
  if (!service.hasAccess()) {
    var authorizationUrl = service.getAuthorizationUrl();
    // 弹出授权窗口
    var html = HtmlService.createHtmlOutput('<a href="' + authorizationUrl + '" target="_blank">点击授权访问Search Console</a>');
    SpreadsheetApp.getUi().showModalDialog(html, '授权提示');
  } else {
    Logger.log('已完成授权');
  }
}

// 查询Search Console数据
function searchConsoleQuery() {
  var service = getService();
  if (!service.hasAccess()) {
    Logger.log('先执行authorize函数完成授权');
    return;
  }

  var siteUrl = 'https://www.your-domain.com/'; // 替换成你的站点地址
  var apiUrl = 'https://www.googleapis.com/webmasters/v3/sites/' + encodeURIComponent(siteUrl) + '/searchAnalytics/query';

  // 自定义查询参数,可按需调整
  var payload = {
    startDate: '2019-10-01',
    endDate: '2019-10-10',
    dimensions: ['query'], // 可选:query、page、country、device、date
    rowLimit: 1000
  };

  var options = {
    method: 'POST',
    contentType: 'application/json',
    headers: {
      'Authorization': 'Bearer ' + service.getAccessToken()
    },
    payload: JSON.stringify(payload),
    muteHttpExceptions: true
  };

  var response = UrlFetchApp.fetch(apiUrl, options);
  var json = JSON.parse(response.getContentText());
  
  // 打印结果到日志
  Logger.log(JSON.stringify(json, null, 2));
  
  // 可选:把结果写入表格
  // var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // sheet.getRange(1,1).setValue('查询词');
  // sheet.getRange(1,2).setValue('点击量');
  // sheet.getRange(1,3).setValue('展示量');
  // json.rows.forEach((row, idx) => {
  //   sheet.getRange(idx+2,1).setValue(row.keys[0]);
  //   sheet.getRange(idx+2,2).setValue(row.clicks);
  //   sheet.getRange(idx+2,3).setValue(row.impressions);
  // });
}

3. 配置Google Cloud项目

  1. 打开Google Cloud控制台,创建/选择关联项目
  2. 启用「Search Console API」
  3. 创建「OAuth客户端ID」,应用类型选「桌面应用」(如果在表格里运行)
  4. 把生成的客户端ID、密钥替换到代码里

注意事项

  • 首次运行必须先执行authorize函数完成授权
  • 站点URL要和Search Console里注册的完全一致,包括协议和末尾斜杠
  • 查询参数可根据需求调整,比如加filters筛选特定设备、国家

内容的提问来源于stack exchange,提问作者PaulFaguet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:50:33