我正在尝试从网站获取简单的响应,并希望将值返回到字段中。
json 看起来与此类似: https://api.sunrise-sunset.org/json?lat=38.725&lng=-9.355&date=2023-08-07
{"results":{"sunrise":"5:42:35 AM","sunset":"7:43:53 PM","solar_noon":"12:43:14 PM","day_length":"14:01:18","civil_twilight_begin":"5:14:59 AM","civil_twilight_end":"8:11:30 PM","nautical_twilight_begin":"4:39:34 AM","nautical_twilight_end":"8:46:54 PM","astronomical_twilight_begin":"4:01:24 AM","astronomical_twilight_end":"9:25:04 PM"},"status":"OK"}
我编写了(在此处找到)一个函数来获取此数据:
Function GetSun(lat,lon As Double, dateinput As Date) As String
Dim url as String
url = "https://api.sunrise-sunset.org/json?lat=" & lat & "&lng=" & lon & "&date=" & dateinput
On Error GoTo ErrorHandler
Dim funtionAccess As Object
functionAccess = createUnoService("com.sun.star.sheet.FunctionAccess")
GetSun = functionAccess.callFunction("WEBSERVICE",Array(url))
Exit Function
ErrorHandler:
GetSun = "Error " & Err
End Function
在单元格中现在有:
C12 = 纬度信息
C13 = 经度信息
B6 = 日期
=GETSUN(C12,C13,B6)
但我想要的是:(我可以在其中定义返回的字段)
=GETSUN(C12,C13,B6,sunrise)
返回:
5:42:35 AM
还有
=GETSUN(C12,C13,B6,sunset)
返回:
7:43:53 PM
如果重要的话:Linux Mint 笔记本电脑上的 libreoffice calc
将 Json 字符串传递给两个使用
Split
提取值的辅助函数:
Public Function GetSunrise(ByVal SunData As String) As String
GetSunrise = Split(Split(SunData, """sunrise"":""", 2)(1), """,""", 2)(0)
End Function
Public Function GetSunset(ByVal SunData As String) As String
GetSunset = Split(Split(SunData, """sunset"":""", 2)(1), """,""", 2)(0)
End Function
测试/输出:
Sunrise = GetSunrise(s)
? Sunrise
5:42:35 AM
Sunset = GetSunset(s)
? Sunset
7:43:53 PM