我如何计算节点js中Google日历API中的事件数?

问题描述 投票:0回答:1

我正在使用dialogflow构建和聊天机器人,并将其与Google日历集成。我已经可以预定一个约会,但是我的问题是我想计算一个时间间隔内出现的事件数。我可以使用以下代码在日志中写入正确的值来执行此操作:

  function get_events(dateTimeStart1,dateTimeEnd1){
    calendar.events.list({  // List all events in the specified time period
      auth: serviceAccountAuth,
      calendarId: calendarId,
      timeMin: dateTimeStart1.toISOString(),
      timeMax: dateTimeEnd1.toISOString()
    }, (err,res) => {
    const events = res.data.items;
      const number_events = events.length;
      console.log(number_events);
    });
  }

问题是我想返回number_events以将其用于其他目的,但我不知道该怎么做。

我想做这样的事情。

  function get_events(dateTimeStart1,dateTimeEnd1){
    calendar.events.list({  // List all events in the specified time period
      auth: serviceAccountAuth,
      calendarId: calendarId,
      timeMin: dateTimeStart1.toISOString(),
      timeMax: dateTimeEnd1.toISOString()
    }, (err,res) => {
    const events = res.data.items;
      const number_events = events.length;
      console.log(number_events);
    });
  return number_events;
  }

您能帮我吗?谢谢

node.js function events google-calendar-api
1个回答
1
投票

这个答案怎么样? calendar.events.list返回承诺。因此,您可以进行如下修改。

修改的脚本:

在此修改例中,假设在函数get_events中调用了run

async function get_events(dateTimeStart1,dateTimeEnd1){
  const res = await calendar.events.list({
    auth: serviceAccountAuth,
    calendarId: calendarId,
    timeMin: dateTimeStart1.toISOString(),
    timeMax: dateTimeEnd1.toISOString(),
  });
  const events = res.data.items;
  const number_events = events.length;
  return number_events;
}

async function run() {

  // do something

  const res = await get_events(dateTimeStart1, dateTimeEnd1);
  console.log(res);

  // do something

}

参考:

添加:

尽管我不确定这是否是您期望的方向,但是当不使用async functions时,以下脚本如何?

function get_events(dateTimeStart1, dateTimeEnd1) {
  return new Promise((resolve, reject) => {
    calendar.events.list(
      {
        auth: serviceAccountAuth,
        calendarId: calendarId,
        timeMin: dateTimeStart1.toISOString(),
        timeMax: dateTimeEnd1.toISOString(),
      },
      (err, res) => {
        if (err) reject(err);
        const events = res.data.items;
        const number_events = events.length;
        resolve(number_events);
      }
    );
  });
}

function run(creds) {
  // do something

  get_events(calendar, dateTimeStart1, dateTimeEnd1).then((res) =>
    console.log(res)
  );

  // do something
}
© www.soinside.com 2019 - 2024. All rights reserved.