我发现在谷歌应用中解析html的最好方法是避免使用XmlService.parse或Xml.parse。 XmlService.parse不适用于某些网站的错误html代码。
这里是一个关于如何轻松解析任何网站而不使用XmlService.parse或Xml.parse的基本示例。在这个例子中,我从“wikipedia.org/wiki/President_of_the_United_States” 中检索一个常规javascript document.getElementsByTagName()的总统名单,并将这些值粘贴到我的Google电子表格中。
1-创建一个新的Google表格;
2 - 点击菜单工具>脚本编辑器...打开使用代码编辑器窗口的新选项卡,将以下代码复制到你的Code.gs:
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu("Parse Menu")
.addItem("Parse", "parserMenuItem")
.addToUi();
}
function parserMenuItem() {
var sideBar = HtmlService.createHtmlOutputFromFile("test");
SpreadsheetApp.getUi().showSidebar(sideBar);
}
function getUrlData(url) {
var doc = UrlFetchApp.fetch(url).getContentText()
return doc
}
function writeToSpreadSheet(data) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var row=1
for (var i = 0; i < data.length; i++) {
var x = data[i];
var range = sheet.getRange(row, 1)
range.setValue(x);
var row = row+1
}
}
3-将HTML文件添加到您的Apps脚本项目。打开脚本编辑器,选择File> New> HTML文件,并将其命名为“test'.Then以下代码复制到你的test.html
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<input id= "mButon" type="button" value="Click here to get list"
onclick="parse()">
<div hidden id="mOutput"></div>
</body>
<script>
window.onload = onOpen;
function onOpen() {
var url = "https://en.wikipedia.org/wiki/President_of_the_United_States"
google.script.run.withSuccessHandler(writeHtmlOutput).getUrlData(url)
document.getElementById("mButon").style.visibility = "visible";
}
function writeHtmlOutput(x) {
document.getElementById('mOutput').innerHTML = x;
}
function parse() {
var list = document.getElementsByTagName("area");
var data = [];
for (var i = 0; i < list.length; i++) {
var x = list[i];
data.push(x.getAttribute("title"))
}
google.script.run.writeToSpreadSheet(data);
}
</script>
</html>
4-保存您的GS和HTML文件,返回到您的电子表格。重新加载您的电子表格。点击“解析菜单” - “解析”。然后点击边栏中的“点击此处获取列表”。
[如何在不使用XmlService的情况下解析Google Apps脚本中的HTML字符串?](https://stackoverflow.com/questions/33893143/how-to-parse-an-html-string-in-谷歌 - 应用程序 - 脚本不-使用-xmlservice) –