我花了大约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.sunrisedata.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

    引用文献:
  • JSON.parse()
  • Sunset and sunrise times API

  • 如果我误解了您的问题,请告诉我。我想修改。

    10-02 18:53