Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用API将基于坐标的Sunrise/Set导入Google工作表_Javascript_Json_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 使用API将基于坐标的Sunrise/Set导入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

我花了大约5个小时试图弄明白这一点,但我在最后一点上陷入了困境

到目前为止,我已经能够调用返回我需要的所有数据。我遇到的问题是能够解析结果,以便它将sunrise或sunset值附加到一个变量,我可以将该变量作为结果导出到google工作表中

理想情况下,在谷歌表单中,我可以像这样使用自定义函数

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;
  };
}