如何从指定URL提取“最后更新”日期至Google Sheets?已遇返回省略号问题
解决Google Sheets IMPORTXML返回省略号的问题
嘿,我碰到过类似的动态页面抓取问题,你的情况是因为目标网站的「最后更新」日期是JavaScript动态渲染的,而Google Sheets的IMPORTXML只能读取静态HTML内容,没法执行页面的JS,所以拿到的只是页面加载时的占位省略号(就是JS还没填充真实日期前的内容)。
下面给你两个可行的解决方案:
方案一:用Google Apps Script写自定义函数(最可靠)
这个方法能直接从页面的JS数据里提取真实日期,不用依赖页面的DOM结构,稳定性更高:
- 打开你的Google Sheet,点击顶部菜单的「扩展程序」→「Apps Script」
- 清空默认的代码,粘贴下面的脚本:
function getLastUpdatedDate() { const targetUrl = "https://covid19.sabah.digital/covid19/"; const pageHtml = UrlFetchApp.fetch(targetUrl).getContentText(); // 从页面内嵌的JS数据中匹配last_updated字段的值 const dateRegex = /last_updated:\s*"([^"]+)"/; const matchResult = pageHtml.match(dateRegex); if (matchResult && matchResult[1]) { // 转换为Sheet可识别的日期格式 return new Date(matchResult[1]); } else { return "提取失败,请检查页面结构"; } }
- 保存脚本(给项目起个名字,比如
SabahCovidScraper),回到Sheet里,在任意单元格输入:=getLastUpdatedDate()
就能看到正确的最后更新日期了。
方案二:用公式组合(快速但依赖页面结构)
如果不想写脚本,可以试试IMPORTHTML加REGEXEXTRACT的组合,直接从页面文本里匹配日期:
=REGEXEXTRACT(IMPORTHTML("https://covid19.sabah.digital/covid19/","text",1),"Last Updated: ([^<]+)")
不过要注意:这个方法依赖页面的文本结构,如果网站后续修改了文字描述(比如把「Last Updated」改成别的),公式就会失效,所以还是更推荐方案一。
内容的提问来源于stack exchange,提问作者Chris Eddy
相关产品推荐
相关产品推荐

