将天气导入 Google 表格

Import Weather into Google Sheets

我正在尝试将延长的 14 天预测导入 Google 表格。我一直在寻找的一些研究已经过时,我希望能为我的知识空白提供一些帮助。

我尝试了 =importXML 和 =importHTML,但收到一条错误消息,提示无法获取 URL。
在单元格 A2 中是 URL:"https://www.timeanddate.com/weather/mexico/mexico-city/ext"
在单元格 B2 中是带有 xpath 的公式: =IMPORTXML(A2,"//*[@class='zebra tb-wt fw va-m tb-hover']")
我也在B2试过:=IMPORTHTML(A2, "table", 2)

我还了解到天气网站可能会使用脚本,所以我不得不尝试 importJSON。
我从以下位置添加到 Google 表格应用程序脚本:https://gist.github.com/allenyllee/c764c86ed722417948fc256b7a5077c4#file-import_json_appsscript-js
然后我尝试: =IMPORTJSON("https://www.timeanddate.com/weather/usa/atlanta/ext?$format=json",table,2)

都给我错误,例如 Error Fetching URL。

任何 instructions/clarifications 将不胜感激。谢谢!

如果更容易,也可以尝试使用 Google 天气或 Weather.com 或 Accuweather。

您必须从网络源中提取 <script type="text/javascript"> 并解析 var data

function getWeatherForecast() {
  var url = 'https://www.timeanddate.com/weather/mexico/mexico-city/ext'
  var fetchedUrl = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
  if (fetchedUrl) {
    var html = fetchedUrl.getContentText().replace(/(\r\n|\n|\r|\t|  )/gm, "")
    var data = html.match(/var data=([^<]+)<\/script>/g)
    var jsn = JSON.parse(data[0].slice(9,-10))
    const header = Object.keys(jsn.detail[0]);
    var result = [header, ...jsn.detail.map(o => header.map(h => Array.isArray(o[h]) ? o[h].join(",") : o[h]))];
    var sh = SpreadsheetApp.getActiveSheet()
    sh.getRange(1,1,result.length,result[0].length).setValues(result)
  }
}

不过,经过几次测试,网站似乎屏蔽了我这边的googleip地址

IP: 107.178.203.254You have been blocked because we have registered an unusual amount of traffic from your IP address.Please contact webmaster@timeanddate.com if you need more information or believe that this is a mistake.