如何在Googlescript中连接domparser对象?

问题描述 投票:0回答:1

我正在尝试解析 Googlescript 脚本中的页面,以便获取位于 的表格列表

“https://stihi.ru/readers.html?vlassoff&start=0”

但是脚本给出了错误

ReferenceError:DOMParser 未定义

双子座告诉我的

当您尝试使用 DOMParser 对象但它在当前环境中不可用时,会出现错误 ReferenceError: DOMParser is not Defined。发生这种情况有以下几个原因:

您正尝试在未在网络上下文中运行的 Google Apps 脚本中使用 DOMParser。例如,您不能在工作表编辑器中运行的脚本中使用 DOMParser。 以下是修复错误 ReferenceError: DOMParser is not Defined 的一些方法:

如果您尝试在 Google Apps 脚本中使用 DOMParser:

您可以使用 HtmlService 类确保您的脚本在 Web 上下文中运行。例如,您可以创建一个 Web 应用程序,然后从该 Web 应用程序调用您的脚本。

我的代码:

function countTablesInHTMLDoc(url) {
  var htmlString = UrlFetchApp.fetch(url).getContentText();
  var parser = new DOMParser();
  var doc = parser.parseFromString(htmlString, "text/html");
  var tables = doc.getElementsByTagName("table");
  var tableCount = tables.length;
  return tableCount;
}

function exampleUsage() {

  var url = "https://stihi.ru/readers.html?vlassoff&start=0";
  var tableCount = countTablesInHTMLDoc(url);
  Logger.log("Количество таблиц в документе по ссылке " + url + ": " + tableCount);
}
google-apps-script domparser
1个回答
0
投票

“DOMParser”不是预先集成的 Apps 脚本类。有关所有可用 Apps 脚本类的全面说明,请查看这篇 Google 开发者文章。

作为解决方法,您可以尝试使用字符串拆分方法来计算“table”元素在原始 HTML 字符串中出现的次数。

请找到以下代码:

function myFunction() {
   
   var htmlString = UrlFetchApp.fetch("https://stihi.ru/readers.html?vlassoff&start=0").getContentText()
   
   let numberOfTables = htmlString.split("</table").length - 1;

   console.log(numberOfTables);

}

这里 split 方法将在表的结束标记的每次迭代时中断字符串,并使用每个字符串创建一个数组,因此我们可以使用 length -1 来查找该字符串出现的次数。希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.