首页 > 解决方案 > 如何使用 Google Script 解析 URL 的 HTML 并将数据插入到 Google Sheet?

问题描述

我对 Google Apps 脚本和 JavaScript 完全陌生。

我只是想:

  1. 阅读A 列并执行 URL 请求。
  2. 解析 URL 的 HTML 以获取titleand num count
  3. title将写入B 列Cnum count列。

这是我的代码:

function getHtml()
{
    var sheet = SpreadsheetApp.getActiveSheet();
    var data = sheet.getDataRange().getValues();
    var url_range = sheet.getRange('A1:A').getValue();
    var response = UrlFetchApp.fetch(url);
    var content = response.getContentText("UTF-8"); 

    var title = new Array();
    var num_count = new Array();

    for (var i = 1; i < data.length; i++) {
        title = content.match(/<title>(.*?)<\/title>/);
        num_count = content.match(/<span class="num_count">(.*?)<\/span>/);
    }

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet1 = ss.getSheetByName("sheet1");

    for (var i = 1; i < data.length; i++) {
        sheet1.getRange(i,2).setValue(title[i]);
        sheet1.getRange(i,3).setValue(num_count[i]);
    }
}

但我只得到以下结果:

在此处输入图像描述

请告诉我应该改进什么。

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


假设您的抓取有效,我认为这非常接近您的要求。

function getHtml()
{
  var ss=SpreadsheetApp.getActive();
  var sheet=ss.getActiveSheet();
  var range=sheet.getRange(1,1,sheet.getLastRow(),3);                 
  var data=range.getValues();
  for(var i=0;i<data.length;i++){
    var response = UrlFetchApp.fetch(data[i][0]);
    var content = response.getContentText("UTF-8"); 
    data[i][1]=content.match(/<title>(.*?)<\/title>/);
    data[i][2]=content.match(/<span class="num_count">(.*?)<\/span>/);
  }
  rg.setValues(data);
}

推荐阅读