Javascript 使用API将基于坐标的Sunrise/Set导入Google工作表
我花了大约5个小时试图弄明白这一点,但我在最后一点上陷入了困境 到目前为止,我已经能够调用返回我需要的所有数据。我遇到的问题是能够解析结果,以便它将sunrise或sunset值附加到一个变量,我可以将该变量作为结果导出到google工作表中 理想情况下,在谷歌表单中,我可以像这样使用自定义函数Javascript 使用API将基于坐标的Sunrise/Set导入Google工作表,javascript,json,google-apps-script,google-sheets,Javascript,Json,Google Apps Script,Google Sheets,我花了大约5个小时试图弄明白这一点,但我在最后一点上陷入了困境 到目前为止,我已经能够调用返回我需要的所有数据。我遇到的问题是能够解析结果,以便它将sunrise或sunset值附加到一个变量,我可以将该变量作为结果导出到google工作表中 理想情况下,在谷歌表单中,我可以像这样使用自定义函数 A1=SunRiseSet(lat,long,date,type) =“下午5:11:12” 我想使用type来指定函数应该返回什么值(日出或日落) 这是我到目前为止的代码 function Su
A1=SunRiseSet(lat,long,date,type)
=“下午5:11:12”
我想使用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()进行解析来检索
- 请将
放在电子表格的单元格中=SunRiseSet(纬度、长度、日期、类型)
- 当你想要日出时。
- 请将
放入电子表格的单元格中。请用双引号括起日期=SunRiseSet(36.7201600,-4.4203400,“2017-12-31”,1)
- 请将
- 当你想要日落时。
- 请将
放在电子表格的单元格中。除=SunRiseSet(36.7201600,-4.4203400,“2017-12-31”)
外,您可以使用1
到
。您也可以像示例一样使用而不使用类型
类型
- 请将
如果我误解了你的问题,请告诉我。我想修改。这非常有效,谢谢!这是我第一次使用JavaScript,我有点困惑是否需要使用JSON.parse或JSON.stringify来完成这项工作。很高兴看到我至少离得很近为了让它在工作表中正常工作,我必须将日期转换为可以在公式中引用的文本。现在,我的行程计划表自动显示给定坐标的日落/升起!非常感谢。我现在的下一步是根据坐标将UTC转换为当地时间。@Jeremy Bauman我很高兴你的问题解决了。关于你的下一个问题,很抱歉我不能理解。你能告诉我们细节吗?或者,如果你将它作为一个新的问题发布,包括详细信息,我和其他用户也将能够想到它。非常感谢你的帮助!我似乎像以前一样从JSON中提取数据时遇到了困难。我似乎不知道如何处理括号。例如:“日期”:[{…“日出”:“2018-08-01 06:02”…@Jeremy Bauman我很抱歉让你感到困惑。我确认了你的新问题。你能将其作为新问题发布吗?你在这个问题上添加的帖子将成为你第一个问题的答案。因此,当你发布新问题时,请单击右上角的“提问”通过这个,其他用户可以发布每个答案。
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;
};
}