将 =ImportHTML 替换为 URLFetchApp

Replacing =ImportHTML with URLFetchApp

我一直在使用 ImportHTML 从这个 link 中提取 MLB 统计数据,没有问题:“https://widgets.sports-reference.com/wg.fcgi?css=1&site=br&url=%2Fleagues%2FMLB%2F2021-standard-batting.shtml&div=div_players_standard_batting"。我只是在 Google Sheet.

上复制 table

但是,源 table 现在已经变得如此之大,以至于我在 Sheet 中收到此错误:“资源 url 的内容超出了最大大小。”

我知道我需要转向 Google Apps 脚本和 URLFetchApp,但我的业余方法只会产生空单元格。我可以使用这种方法在我的 link 中重现 table 吗?

感谢您的指导和宝贵时间。

从 table 检索数据的更好方法:

function importTableHTML(url) {
  var html = '<table' + UrlFetchApp.fetch(url).getContentText().match(/(?<=\<table).*(?=\<\/table)/g) + '</table>';
  var trs = [...html.matchAll(/<tr[\s\S\w]+?<\/tr>/g)];
  var data = [];
  for (var i=0;i<trs.length;i++){
    var tds = [...trs[i][0].matchAll(/<(td|th)[\s\S\w]+?<\/(td|th)>/g)];
    var prov = [];
    for (var j=0;j<tds.length;j++){
      donnee=tds[j][0].match(/(?<=\>).*(?=\<\/)/g)[0].replace(/&nbsp;/g,' ');
      if(donnee.indexOf("</a>")>-1){
        prov.push(donnee.match(/(?<=\>).*(?=\<\/)/g)[0]);
      }else{
        prov.push(donnee);
      }
    }
    data.push(prov);
  }
  return(data);
}