使用 API 将基于坐标的日出/日落导入 Google Sheet

Jer*_*man 5 javascript json google-sheets google-apps-script

我花了大约 5 个小时试图解决这个问题,但我陷入了最后一点。

到目前为止,我已经能够调用https://sunrise-sunset.org/api返回我需要的所有数据。我遇到的问题是能够解析结果,以便将日出或日落值附加到一个变量中,我可以将其作为结果导出到谷歌表中。

理想情况下,在谷歌表格中,我能够像其他这样的函数一样使用自定义函数

A1=SunRiseSet(lat,long,date,type)  
Run Code Online (Sandbox Code Playgroud)

=“下午 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};
}
Run Code Online (Sandbox Code Playgroud)

我确信这真的很容易,但到目前为止我尝试过的一切都失败了。太感谢了!

Tan*_*ike 3

下面的修改怎么样?

修改要点:

  • sunrise的值为data.results.sunrise
  • data.results.sunrise并且data.results.sunset可以通过使用 解析来检索JSON.parse()

上面反映的修改后的脚本如下。

修改后的脚本:

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;
  };
}
Run Code Online (Sandbox Code Playgroud)

用法 :

  • 请放入=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")电子表格上的单元格中。您可以使用 except 1to typetype您也可以像示例一样不使用。

这些参数来自日落和日出时间 API

参考 :

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