【问题标题】:Node.js. Missing timeMin parameter on freebusy query. Google calendar API节点.js。 freebusy 查询中缺少 timeMin 参数。谷歌日历 API
【发布时间】:2018-10-01 08:55:22
【问题描述】:

我正在尝试在 Node.js 中使用 google-api-nodejs-client。我对freebusy 查询中的timeMin 参数的格式有疑问。根据docs,该值应为 ISO 格式的时间日期。我试过了,但我得到了一个错误。在event.list 方法中,ISO 格式字符串可以正常工作。

查询freebusy代码:

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..
        }
    })
}

并使用 ISO 格式的日期编码 events.list。此代码有效:

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 完成授权。

【问题讨论】:

    标签: javascript google-calendar-api google-api-nodejs-client


    【解决方案1】:

    完成!我的错误在于请求的结构

    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..
            }
        })
    }
    

    【讨论】:

    • 所以官方文档过去和现在都是完全错误的?我刚才有完全相同的问题。你是怎么想出来的?有没有我遗漏的文档?
    • 2021 年了,还没有修复……我浪费了这么多时间 :( 谢谢好心的陌生人!
    猜你喜欢
    • 1970-01-01
    • 2019-12-04
    • 2015-05-11
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多