我正在使用Google应用程序脚本在Google Sheets中创建一个应用程序。该应用程序抓取一个网页,并将一个HTML页面作为字符串返回给我。我正试图将它插入到DOM中,以便使用DOM查询在页面中查找所需的数据。通常,您可以使用document.createDocumentFragment()
创建一个文档片段,或者使用document.createElement()
创建一个分离的元素,然后使用HTML字符串设置innerHTML。问题是,GAS没有document
上下文。
有人有解决方法的想法吗?或者有其他方法来查询一个大的文本字符串吗?
p.s.我的第一反应是找到我作为API所需要的数据,但我找不到任何满足我需求的数据。刮屏是我最后的手段。
更新:感谢所有发现并标记类似问题的人。GS的Cheerio库是正确的解决方案。https://stackoverflow.com/a/61928025/735374
您不能在Google Apps脚本中创建DOM,至少不能在服务器端代码中创建DOM。
为了查询HTML字符串,您需要知道所需的数据在页面中的确切位置,其中包含可识别的子字符串,例如包含元素ID,但这些子字符串通常是生成的,因此不知道。众所周知,RegEx也无法解析HTML。
如果不需要在无人参与的情况下运行脚本,则可以作为Sheets附加组件来执行此操作。在这种情况下,工作流程将沿着以下路线:
- 将HTML数据作为字符串抓取
- 使用
createHtmlOutput(html)
方法创建HTMLOutput对象 - 将HTML作为对话框或侧边栏打开,并在对话框中执行querySelector调用。(在这种情况下,您必须将这些作为代码添加到加载页面时运行的
<script>
标记中 - 使用
google.script.run
将值返回到Google Apps脚本