gpt4 book ai didi

javascript - 在 Google Apps 脚本自定义函数中访问和抓取逗号分隔的 UTF-8 文本网页

转载 作者:行者123 更新时间:2023-12-03 05:21:42 26 4
gpt4 key购买 nike

我正在尝试为 Google 表格编写一个自定义函数,该函数将访问地下天气的历史天气数据并返回温度。数据位于全部由逗号分隔的 UTF-8 文本的网页中。每行的第一项是时间,第二项是温度。该函数将以日期-DD、月份-MM、年份-YYYY、时间-HH:MM AM(或PM)的形式接受输入。我需要进入网页,找到与输入相同的小时的行(所有数据都是在该小时的第53分钟获取的),并返回当时的温度。

这是我第一次使用 javascript 式编码,我认为我打开和解码网页的方式不正确。在谷歌表格中,它说 TEMP 是一个未知函数。谢谢。

function TEMP(day, month, year, time) {
var newTime = String(time).split("");
if(String(newTime[6]).localeCompare('A')){
var newTime1 = newTime[0] + newTime[1] + ":53 AM";
}
else if(String(time[6]).localeCompare('P')){
newTime1 = newTime[0] + newTime[1] + ":53 PM";
}
else{
}

try{
var url = "https://www.wunderground.com/history/airport/KTVR/" + year +"/" + month + "/" + day + "/DailyHistory.html?format=1";
}
catch(err){
return "weather data not found"
}

var opened = decodeURI(UrlFetchApp.fetch(url));

for each(var line in opened){
var newLine = String(line).split(',');
if(newLine[0] == newTime1){
return newLine[1];
}
else{
}
}

return "sorry something went wrong";
}

最佳答案

这里的主要错误是关于 UrlFetchApp.fetch 的错误假设。返回。我建议仔细阅读文档。此方法返回类 HTTPResponse 的对象。人们通常想要从这个对象中得到的是 getContentText() ,它返回一个包含网页源标记的字符串。可以用换行符分割得到一个数组;仅通过在打开的内容中写入 var line 不会自行发生这种情况。

在此对象上使用 decodeURI 是没有意义的。该函数用于解码表示 URI 的字符串,例如

decodeURI("https://developer.mozilla.org/ru/docs/JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");

它是关于解码网页地址,而不是其内容。

此外,您在 try-catch block 中放置了错误的内容。在字符串连接步骤中不会引发任何错误。获取数据时很可能会出现错误;您可能需要查看 fetch 方法的 muteHttpExceptions 选项。

无论如何,去掉空的 else {} block ,它们有什么用?

对脚本进行以下更改后,

var url = "https://www.wunderground.com/history/airport/KTVR/" + year +"/" + month + "/" + day + "/DailyHistory.html?format=1";
var opened = UrlFetchApp.fetch(url).getContentText().split('\n');

我能够在电子表格中使用 =temp(2,3,2016,"12:34 am");它返回 52.0。

关于javascript - 在 Google Apps 脚本自定义函数中访问和抓取逗号分隔的 UTF-8 文本网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41350487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com