Разбор HTML с помощью сценариев XmlService Google - PullRequest
0 голосов
/ 31 мая 2018

У меня есть этот код, который работает:

function getElementsByClassName(element, classToFind) {  
  var data = [];
  var descendants = element.getDescendants();
  descendants.push(element);  
  for(i in descendants) {
    var elt = descendants[i].asElement();
    if(elt != null) {
      var classes = elt.getAttribute('class');
      if(classes != null) {
        classes = classes.getValue();
        if(classes == classToFind) data.push(elt);
        else {
          classes = classes.split(' ');
          for(j in classes) {
            if(classes[j] == classToFind) {
              data.push(elt);
              break;
            }
          }
        }
      }
    }
  }
  return data;
}

function getElementsByTagName(element, tagName) {  
  var data = [];
  var descendants = element.getDescendants();  
  for(i in descendants) {
    var elt = descendants[i].asElement();     
    if( elt !=null && elt.getName()== tagName) data.push(elt);      
  }
  return data;
}

function test() {
  var options = {};
  options.headers = {"Authorization": "Basic " + Utilities.base64Encode("user" + ":" + "password")};
  var html = UrlFetchApp.fetch("http://url", options).getContentText();
  var doc = XmlService.parse(html);
  var html = doc.getRootElement();
  var table = getElementsByClassName(html, 'test')[0];


   var tds = getElementsByTagName(table, 'td');
    var row = [];
    for (var c=0,clength=tds.length; c<clength; c++) {
      row.push(tds[c].getText());
    }
    return row;
}

Но если я добавлю этот цикл в функцию тестирования, я получу:

«Превышено максимальное время выполнения»

ошибка, и она не работает.

  var rows = [];
  var trs = getElementsByTagName(table, 'tr');
  for (var r=0,rlength=trs.length; r<rlength; r++) {
    var tds = getElementsByTagName(table, 'td');
    var row = [];
    for (var c=0,clength=tds.length; c<clength; c++) {
      row.push(tds[c].getText());
    }
    rows.push(row);
  }
  return rows;

Работающий код переносит все ячейки HTML-таблицы в один столбец в Google Sheets, но вторая часть кода должнаприведите столбцы таблицы html, но по какой-то причине это не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...