如何使用 Google App Script 和 Cheerio 在同一个字符串中映射不同的 类?

how to map different classes within the same string using Google App Script and Cheerio?

用于 Cheerio 的库 Google App Script:

1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0



我想收集大家的文字<td class="name large-link"><td class="name large-link">存在的一个字符串,我尝试映射如下:

function TestOne() {
  var sheet = SpreadsheetApp.getActive().getSheetByName('Test One');
  var url = sheet.getRange('Test One!A1').getValue();
  
  const contentText = UrlFetchApp.fetch(url).getContentText();
  const $ = Cheerio.load(contentText);

  //Menu do Plantel
  $('#page_team_1_block_team_squad_7-table > tbody > tr > td')
  .each((index, element) => {
  sheet.getRange(index+2,2).setValue($(element.shirtnumber).text());
  sheet.getRange(index+2,3).setValue($(element.name.large-link).text());
  });
}

注意:我想把table中存在的所有class的文本都取出来,但是因为它太大了,我把它总结成两个class就可以了这样我就可以了解我需要做什么,然后再添加其余部分。

但是我没有成功返回,我找不到如何制作这个集合的例子,我想要一个指示,这样我就不需要做几个不同的循环并将它们全部合并到一.

我的想法是在我的电子表格中重新创建此 table:

这里是站点地图:

https://int.soccerway.com/teams/norway/fotballklub-bodoglimt/1595/squad/

最实用的选项是不用脚本,可以使用Google Sheets

的'importHTML'功能

文档:https://support.google.com/docs/answer/3093339?hl=en

它对我有用,我得到了 example 并做了一些修改

   function myFunction() {
  const url = 'https://int.soccerway.com/teams/norway/fotballklub-bodoglimt/1595/squad/';
  const ss = SpreadsheetApp.getActive()
  const sh = ss.getSheetByName('Test One');
  const contentText = UrlFetchApp.fetch(url).getContentText();
  const $ = Cheerio.load(contentText);

  var header = Array();

  $("table tr th").each(function (i, v) {
    header[i] = $(this).text();
  })

  var data = Array();

  $("table tr").each(function (i, v) {
    data[i] = Array();
    $(this).children('td').each(function (ii, vv) {
      data[i][ii] = $(this).text();
    });
  })



  for (let i = 1; i < data.length - 6; i++) {
    console.log(data[i].length);
    console.log(data[i]);
    sh.getRange(i, 1, 1, data[i].length).setValues([data[i]]);
  }
}