如何使用 UrlFetchApp 编写 Google Apps 脚本以在 FinViz.com 中提取部分表格数据? 参考资料

问题描述

我喜欢学习如何编写 Google Apps 脚本以将 FinViz.com 中的部分表格数据导入 Google 表格,但使用 UrlFetchApp。我曾经使用过 IMPORTHTML。如果只搜索几个股票贴纸,它就可以很好地工作。但是,如果我为许多股票贴纸循环该函数,尽管 FinViz 中提供了此类数据,但我仍面临大量空导入。我从谷歌搜索中看到 UrlFetchApp 是要走的路。任何人都可以帮助使用 UrlFetchApp 编写脚本吗?举一个简单的例子,我在 Google 工作表的 A 列中有一个股票行情列表,并从 FinViz 导入它们的远期市盈率数据,然后将它们写在工作表的 B 列中。我在这里分享一个谷歌表。非常感谢!!

https://docs.google.com/spreadsheets/d/1JmdBKqNVoj2wpJ_st22C8FchgTUss8Edo4q_gMmAgKE/edit?usp=sharing

解决方法

在对您提供的站点进行一些测试并尝试不同的方法后,我认为您只需检索 HTML 静态站点文本,然后在站点上进行 Javascript 搜索以返回您要查找的值,会更容易。我分享的答案中的代码失败了,因为当您尝试使用 XML 解释该数据时,该网站存在一些 HTML 兼容性问题。此外,您感兴趣的表格位于 await Model.updateMany({ Email : "xyz@gmail.com" },{ phone : 9876054321 }); let result = await Model.find({Email : "xyz@gmail.com"}).lean(); console.log(result) 元素内,因此您需要先访问 div 元素,然后再访问表格。

以下带有不言自明注释的代码段返回并记录您提供的网站中的 div 值:

Forward P/E

参考资料

  • UrlFetchApp.fetch() 获取 HTTP 响应数据。
  • getContentText() 返回以字符串形式编码的 HTTP 响应。
  • Javascript search 返回正则表达式和给定字符串之间第一个匹配项的索引索引,如果没有找到匹配项,则返回 -1。
  • Javascript substring 返回一个新字符串,其中包含给定字符串的指定部分,从第一个索引开始到第二个索引结束。