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

nbewdwxp  于 2022-12-25  发布在  Java
关注(0)|答案(1)|浏览(132)

我已经花了大约5个小时试图弄清楚这一点,并在最后一点卡住了。
到目前为止,我已经能够调用https://sunrise-sunset.org/api来返回我需要的所有数据,但我遇到的问题是如何解析结果,以便它将sunise或sunset值附加到一个变量上,然后我可以将其作为结果导出到google sheet中。
理想情况下,在google工作表中,我可以像这样使用自定义函数

A1=SunRiseSet(lat,long,date,type)

="下午5时11分12秒"
我想使用type来指定函数应该返回什么值(sunrise或sunset)。
下面是我目前拥有的代码

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

我相信这真的很容易,但到目前为止我所尝试的一切都失败了。非常感谢!

wfveoks0

wfveoks01#

下面的修改怎么样?

修改点:

  • sunrise的值在data.results.sunrise处。
  • data.results.sunrisedata.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;
  };
}

用法:

  • 请将=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")放入电子表格的单元格中。除了1type之外,您可以使用。您也可以像示例一样不使用type

这些参数来自Sunset and sunrise times API

参考文献:

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

相关问题