我花了大约5个小时试图弄清楚这一点,并陷入了最后一刻。
到目前为止,我已经能够调用https://sunrise-sunset.org/api返回我需要的所有数据。我遇到的问题是能够解析结果,以便将日出或日落值附加到可以作为结果导出到Google工作表中的变量。
理想情况下,在Google工作表中,我可以像这样使用自定义函数
A1=SunRiseSet(lat,long,date,type)
=“5:11:12 PM”
我想使用type来指定函数应返回的值(日出或日落)。
这是我到目前为止的代码
function SunRiseSet(lat,long,date,type) {
var response = UrlFetchApp.fetch("https://api.sunrise-sunset.org/json?lat="+lat+"&lng="+long+"&date="+date);
var json = response.getContentText();
Logger.log(json);
var data = JSON.stringify(json);
Logger.log(data);
var data = json;
var sunrise = data.sunrise;
var sunset = data.results.sunset
type=1;
if(type==1){
return this.sunrise}
else{
return this.sunset};
}
我敢肯定这确实很容易,但是到目前为止,我尝试过的一切都失败了。非常感谢!
最佳答案
以下修改如何?
修改要点:
sunrise
的值是data.results.sunrise
。 data.results.sunrise
和data.results.sunset
可以通过使用JSON.parse()
进行解析来检索。 上面反射(reflect)的修改后的脚本如下。
修改后的脚本:
function SunRiseSet(lat,long,date,type) {
var response = UrlFetchApp.fetch("https://api.sunrise-sunset.org/json?lat="+lat+"&lng="+long+"&date="+date);
var json = response.getContentText();
var data = JSON.parse(json);
var sunrise = data.results.sunrise;
var sunset = data.results.sunset;
if (type == 1) {
return sunrise;
} else {
return sunset;
};
}
用法:
=SunRiseSet(lat,long,date,type)
放在电子表格上的单元格中。 例如,
sunrise
时。=SunRiseSet(36.7201600,-4.4203400,"2017-12-31",1)
放在电子表格上的单元格中。请用双引号将date
括起来。 sunset
时。=SunRiseSet(36.7201600,-4.4203400,"2017-12-31")
放在电子表格上的单元格中。您可以使用1
之外的type
。您也可以不使用type
就可以使用该示例。 这些参数来自Sunset and sunrise times API。
引用文献:
如果我误解了您的问题,请告诉我。我想修改。