如何使用 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'功能
它对我有用,我得到了 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]]);
}
}
用于 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'功能它对我有用,我得到了 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]]);
}
}