代码之家  ›  专栏  ›  技术社区  ›  shuwi

节点。js。freebusy查询中缺少timeMin参数。谷歌日历API

  •  2
  • shuwi  · 技术社区  · 6 年前

    我正在尝试在节点中使用google api nodejs客户端。js。我对 timeMin 中的参数 freebusy 查询根据 docs ,值应为ISO格式的timedate。我试过了,但我错了。在 event.list 方法ISO格式字符串工作正常。

    查询 忙/闲 代码:

    function freeBusyStatus (auth, calendarId) {
        const startDate = new Date('20 February 2018 12:00').toISOString()
        const endDate = new Date('20 February 2018 13:00').toISOString()
        const check = {
            auth: auth,
            // timeMin: '2018-02-20T12:00:00+03:00', //not working with same format too
            timeMin: new Date('20 February 2018 12:00'),
            timeMax: endDate,
            items: [{id: calendarId}]
        }
        calendar.freebusy.query (check, function (err, response) {
            if (err) {
                console.log ('error: ' + err)
            } else {
                ..some code..
            }
        })
    }
    

    和代码 events.list 日期为ISO格式。此代码适用于:

    function listEvents(auth, calendarId) {
        const eventList = {
            auth: auth,
            calendarId: calendarId,
            timeMin: new Date('20 February 2018 12:00').toISOString(),
            maxResults: 10,
            singleEvents: true,
            orderBy: 'startTime'
        }
        calendar.events.list(eventList, function(err, response) {
            if(err) {
                console.log(err)
            }
        const events = response.data.items
            if (events.length != 0) { 
                ..some code..
            }
        })
    }
    

    我认为问题在于日期格式。当我尝试发送日期如下的请求时 2018-02-20 (没有时间),响应具有相同的错误 Error: Missing timeMin parameter.

    我做错了什么?授权由JWT完成。

    1 回复  |  直到 6 年前
        1
  •  8
  •   Reza    6 年前

    完成!我的错误是请求的结构

    function freeBusyStatus (auth, calendarId) {
        const check = {
            auth: auth,
            resource: {
                timeMin: startDate,
                timeMax: endDate,
                items: [{id: calendarId}]
            }
        }
        const startDate = new Date('20 February 2018 12:00').toISOString()
        const endDate = new Date('20 February 2018 13:00').toISOString()
        calendar.freebusy.query (check, function (err, response) {
            if (err) {
                console.log ('error: ' + err)
            } else {
                ..some code..
            }
        })
    }