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

如何通过Google Sheets脚本调用PageSpeed Insights API批量查询多URL性能数据

批量查询修改方案

修改思路

  • 将原来的单个URL变量替换为URL数组,填入所有需要查询的目标URL
  • 新增循环逻辑遍历数组中的每一个URL,依次执行性能查询和结果写入操作
  • 新增单URL错误捕获,避免单个URL查询失败导致整个批量任务中断

修改后完整代码

var pageSpeedApiKey = '你的API KEY';
// 把需要查询的所有URL放到这个数组里,用英文逗号分隔,每个URL用引号包裹
var pageSpeedMonitorUrls = [
  'https://www.han.nl/',
  'https://example.com/',
  'https://test.com/'
  // 可以继续往后加更多URL
];
    
function monitor() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheetByName('results');
  var date = Utilities.formatDate(new Date(), 'GMT', 'yyyy-MM-dd');
  // 遍历所有URL
  pageSpeedMonitorUrls.forEach(function(url) {
    try {
      var desktop = callPageSpeed('desktop', url);
      var mobile = callPageSpeed('mobile', url);  
      var desktopVitals = getVitals(desktop);
      var mobileVitals = getVitals(mobile);
      sheet.appendRow([
        date,
        url,
        desktop.lighthouseResult.categories.performance.score * 100,
        desktopVitals.lcp == -1 ? ' ' : desktopVitals.lcp,
        desktopVitals.fid == -1 ? ' ' : desktopVitals.fid,
        desktopVitals.cls == -1 ? ' ' : desktopVitals.cls,
        mobile.lighthouseResult.categories.performance.score * 100,
        mobileVitals.lcp == -1 ? ' ' : mobileVitals.lcp,
        mobileVitals.fid == -1 ? ' ' : mobileVitals.fid,
        mobileVitals.cls == -1 ? ' ' : mobileVitals.cls
      ]);
      // 这里可以调整延迟时间避免API请求超限,不需要可以直接删除
      Utilities.sleep(1000);
    } catch (e) {
      // 单个URL查询失败时打印错误日志,不影响其他URL执行
      console.error('URL查询失败: ' + url + ',错误信息:' + e.toString());
    }
  });
}
    
function callPageSpeed(strategy, url) {
  var pageSpeedUrl = 'https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=' + encodeURIComponent(url) + '&key=' + pageSpeedApiKey + '&strategy=' + strategy;
  var response = UrlFetchApp.fetch(pageSpeedUrl);
  var json = response.getContentText();
  return JSON.parse(json);
}
    
function getVitals(result) {
  var lcp = -1, fid = -1, cls = -1;
  try {
    lcp = result.originLoadingExperience.metrics.LARGEST_CONTENTFUL_PAINT_MS.percentile / 1000;
  } catch {}
  try {
    fid = result.originLoadingExperience.metrics.FIRST_INPUT_DELAY_MS.percentile / 1000;
  } catch {}
  try {
    cls = result.originLoadingExperience.metrics.CUMULATIVE_LAYOUT_SHIFT_SCORE.percentile;
  } catch {}
  return { "cls":cls, "fid":fid, "lcp":lcp  };
}

注意事项

  • 替换代码开头的你的API KEY为你自己的实际API密钥
  • 确保Google Sheets中存在名为results的工作表,否则会报错
  • URL数量较多时可适当调高sleep的时间参数,避免触发API频率限制
  • 脚本执行后所有URL的查询结果会按行追加写入results工作表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:15:04