.net - 如何使用 MS Graph API 有效地从多个日历中获取日历视图
问题描述
根据文档,我们可以从用户的默认日历、默认日历组或特定日历组中检索日历视图。
我想知道在给定特定开始日期和结束日期的情况下,我是否能够从多个 Outlook 日历中获取日历视图。
直接的方法可能是:
调用“ list calendars ”端点
GET /users/{id | userPrincipalName}/calendars
对于先前结果中的每个日历 ID,调用“列表日历视图”端点
GET /users/{id | userPrincipalName}/calendars/{id}/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
这种方法的问题在于它不是很有效。想象一下,如果我有 20 多个日历,并且对于每个日历,我需要调用日历视图端点 20 次。不好...
有没有更好的方法来做到这一点?
解决方案
您可以对第二点使用批量请求。
例子:
var today = DateTime.Now.Date;
var start = today.ToString("yyyy-MM-ddTHH:mm:ssK");
var end = today.AddDays(1).ToString("yyyy-MM-ddTHH:mm:ssK");
var queryOptions = new List<QueryOption>
{
new QueryOption("startDateTime", start),
new QueryOption("endDateTime", end)
};
var requestIds = new List<string>();
var batchRequestContent = new BatchRequestContent();
foreach (var calendarId in calIds)
{
var calendarViewRequest = client.Users["id"].Calendars[calendarId].CalendarView.Request(queryOptions);
var requestId = batchRequestContent.AddBatchRequestStep(calendarViewRequest);
requestIds.Add(requestId);
}
var returnedResponse = await client.Batch.Request().PostAsync(batchRequestContent);
foreach (var requestId in requestIds)
{
var result = await returnedResponse.GetResponseByIdAsync<UserCalendarViewCollectionResponse>(requestId);
}
JSON 批处理请求当前限制为 20 个单独的请求。
资源:
推荐阅读
- java - 在 JavaFX 中绘制 2 条平行线
- windows - 为什么Chrome安装不能触发Windows Defender等
- php - 查询 MySQL 和 FROM_UNIXTIME Epoch
- javascript - 使用闭包返回函数作为参数
- angular - 如何从角度向 Google Analytics 报告当前标题?
- hyperledger-fabric - MSP 错误:提供的身份无效:x509:证书由未知权威 Hyperledger Fabric 签名
- python - 更改表未添加列 (pymssql)
- javascript - 将数据从客户端javascript发送到节点js
- wordpress - 将短代码属性传递给 WordPress 远程发布 URL
- sql - 无法在派生表中绑定多个部件标识符