- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道如何使用 Microsoft Graph 显示特定日历中的所有事件:
var oEvents = await _graphClient
.Me
.Calendars[oCalendar.Id]
.Events
.Request()
.GetAsync();
if(oEvents?.Count > 0)
{
foreach(Event oEvent in oEvents)
{
string strEventInfo = $"Subject: {oEvent.Subject}" + Environment.NewLine;
//strEventInfo += $"Body: {oEvent.BodyPreview}" + Environment.NewLine;
strEventInfo += $"Times: Start - {oEvent.Start.DateTime} End - {oEvent.End.DateTime}" + Environment.NewLine;
//strEventInfo += $"Location: {oEvent.Location.DisplayName}" + Environment.NewLine;
strEventInfo += $"All Day: {oEvent.IsAllDay}" + Environment.NewLine;
Console.WriteLine(strEventInfo);
}
}
我现在想知道的是如何删除某个日期范围内具有TruckleSoft1扩展属性的所有事件值为 CLM_MidweekMeeting。
我对大多数在线文档感到困惑,因为它以一种我在编码中不使用的格式呈现,而且我还不能很好地研究如何将其转化为我的需求。
在ASPNET Snippets中,它提供了一个删除特定事件的例子:
public async Task<List<ResultsItem>> DeleteEvent(GraphServiceClient graphClient, string id)
{
List<ResultsItem> items = new List<ResultsItem>();
// Delete the event.
await graphClient.Me.Events[id].Request().DeleteAsync();
items.Add(new ResultsItem
{
// This operation doesn't return anything.
Properties = new Dictionary<string, object>
{
{ Resource.No_Return_Data, "" }
}
});
return items;
}
我看到重要的一行:
await graphClient.Me.Events[id].Request().DeleteAsync();
但我知道有一种方法可以更简单地完成我需要的事情。我在 DateTime
对象(仅限日期)中有两个日期(开始/结束)。
做我想做的事的正确方法是什么?
谢谢。
我想我应该使用以下方法来删除所需的事件:
var oEvents = await _graphClient
.Me
.Calendars[oCalendar.Id]
.Events
.Filter(" ?????? ")
.Expand(" ????? ")
.Request()
.GetAsync();
我知道 Filter 会指定日期范围,但可以计算出其中的内容。我知道我们在扩展属性方面使用 Expand。 我走在正确的轨道上吗?
假设我是,这是否意味着我们必须迭代任何返回列表并一个一个地删除每个事件?听起来是批处理的想法,但这是另一个问题,因为我也很难得到批处理的工作示例。
好的,我查看了答案中提供的资源和这个 additional resource所以我得到了这段代码:
// The first thing we need to do is delete the existing events
if(oData.Settings.CalendarEntryType == "CLM_MidweekMeeting")
{
// We only want events within the desired date range
string strFilter = String.Format(
"start/dateTime ge '{0}T00:00' and end/dateTime le '{1}T23:59'",
oData.Settings.StartDate.ToString("yyyy-MM-dd"),
oData.Settings.EndDate.ToString("yyyy-MM-dd"));
// We only want events of the right type
string strExpand = "singleValueExtendedProperties($filter=id eq '{TruckleSoft1}' and value eq '{CLM_MidweekMeeting}')";
// Select the events (if any) and delete them
var oEvents = await _graphClient
.Me
.Calendars[oData.Settings.CalendarID]
.Events
.Request()
.Filter(strFilter)
.Expand(strExpand)
.GetAsync();
if (oEvents?.Count > 0)
{
foreach (Event oEvent in oEvents)
{
// Delete the event (Do I need to use the specific calendar events list?)
await _graphClient.Me.Events[oEvent.Id].Request().DeleteAsync();
}
}
}
但我得到一个异常(exception):
Code: ErrorInvalidProperty Message: PropertyId values may only be in one of the following formats: 'MapiPropertyType namespaceGuid Name propertyName', 'MapiPropertyType namespaceGuid Id propertyId' or 'MapiPropertyType propertyTag'.
这对我来说意味着,当我按照示例代码进行操作时:
// Extended Properties
var extendedProperties = new EventSingleValueExtendedPropertiesCollectionPage();
extendedProperties.Add(new SingleValueLegacyExtendedProperty
{
Id = String.Format("String {{{0}}} Name {1}", Guid.NewGuid().ToString(), "TruckleSoft1"),
Value = oData.Settings.CalendarEntryType
});
像那样使用 Guid.NewGuid()
不是一个好主意,因为它总是会改变的。在我看来,我必须使用生成器手动创建 Guid 并构建静态字符串。然后我在删除事件和创建事件时使用相同的字符串。正确吗?
我更改了我的代码:
private static readonly string _PropertyCLM_MidweekMeeting = "String {~~~~} Name TruckleSoft1";
然后,我调整了查询代码:
// We only want events within the desired date range
string strFilter = String.Format(
"start/dateTime ge '{0}T00:00' and end/dateTime le '{1}T23:59'",
oData.Settings.StartDate.ToString("yyyy-MM-dd"),
oData.Settings.EndDate.ToString("yyyy-MM-dd"));
// We only want events of the right type
string strExpand = $"singleValueExtendedProperties($filter=id eq '{_PropertyCLM_MidweekMeeting}' and value eq 'CLM_MidweekMeeting')";
// Select the events (if any) and delete them
var oEvents = await _graphClient
.Me
.Calendars[oData.Settings.CalendarID]
.Events
.Request()
.Filter(strFilter)
.Expand(strExpand)
.GetAsync();
if (oEvents?.Count > 0)
{
foreach (Event oEvent in oEvents)
{
// Delete the event (Do I need to use the specific calendar events list?)
await _graphClient.Me.Events[oEvent.Id].Request().DeleteAsync();
}
}
但我得到一个异常(exception):
Code: ErrorInvalidUrlQueryFilter Message: The query filter contains one or more invalid nodes.
所以 strExpand
是:
singleValueExtendedProperties($filter=id eq 'String {~~~~} Name TruckleSoft1' and value eq 'CLM_MidweekMeeting')
怎么了?
最佳答案
删除仅适用于单个事件
,您不能对集合执行删除。
使用 batching可能是一个可行的解决方案,但请记住,这仍处于预览阶段并且 not supported by the .NET SDK然而。为了使用它,您需要自己构造和提交 HTTP 请求(并处理响应)。
此附加资源很有用:Get singleValueLegacyExtendedProperty
如果您只对 id 感兴趣,那么您可以使用 Expand。但是,如果您对 id 和 value 都感兴趣,那么您实际上使用了过滤器>!
GET /me/events?$filter=singleValueExtendedProperties/Any(ep: ep/id eq '{id_value}' and ep/value eq '{property_value}')
Guid 在应用程序中也必须是静态的(如更新后的问题中所述):
private static readonly string _PropertyCLM_MidweekMeeting = "String {~~~~} Name TruckleSoft1";
因此,要同时过滤日期范围和扩展属性 ID 和值,代码为:
// The first thing we need to do is delete the existing events
if(oData.Settings.CalendarEntryType == "CLM_MidweekMeeting")
{
// We only want events within the desired date range
string strFilterDateRange = String.Format(
"start/dateTime ge '{0}T00:00' and end/dateTime le '{1}T23:59'",
oData.Settings.StartDate.ToString("yyyy-MM-dd"),
oData.Settings.EndDate.ToString("yyyy-MM-dd"));
// We only want events of the right type
string strFilterProperty = $"singleValueExtendedProperties/Any(ep: ep/id eq '{_PropertyCLM_MidweekMeeting}' and ep/value eq 'CLM_MidweekMeeting')";
string strFilter = strFilterDateRange + " and " + strFilterProperty;
// Select the events (if any) and delete them
var oEvents = await _graphClient
.Me
.Calendars[oData.Settings.CalendarID]
.Events
.Request()
.Filter(strFilter)
.GetAsync();
if (oEvents?.Count > 0)
{
foreach (Event oEvent in oEvents)
{
// Delete the event (Do I need to use the specific calendar events list?)
await _graphClient.Me.Events[oEvent.Id].Request().DeleteAsync();
}
}
}
关于c# - 使用 Microsoft Graph 从日历中删除日期范围内的许多事件和某个扩展属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46017008/
我对这两个概念感到困惑:In-graph replication和 Between-graph replication阅读 Replicated training 时在 tensorflow 的官方
我对这两个概念感到困惑:In-graph replication和 Between-graph replication阅读 Replicated training 时在 tensorflow 的官方
我正在尝试使用 https://graph.windows.net/{teantId}/users/[email protected]/thumbnailPhoto?api-version=1.6 访
我正在尝试使用 Graphs.jl 模块从 Julia 中的图中获取子图。我有图,并将其顶点和边存储到列表中,然后我的算法在该列表中移动并删除不属于新子图的节点和边。到这一部分,一切正常,在整个算法之
我是 Arangodb 的新手。我对使用哪个图形 API 感到困惑。我可以在 http://localhost:8529/ url 看到一张图。官方视频讨论了 Gremlin(我也安装了它)。然后就是
截至今天,文档建议使用 Microsoft Graph 而不是 Azure AD Graph API 来访问 Azure AD/B2C 资源。 之前,通过 Azure AD Graph API,我们可
我们希望将 .NET 应用从使用 Azure AD Graph 迁移到 Microsoft Graph API。目前我们正在使用包 Microsoft.WindowsAzure.Configurati
也许我遗漏了什么,但我不知道为什么 GraphQL 的标题中有 graph。 我猜这与 Graph Theory 有关和 graph并且可以看到某种联系,但如果有人能用简单的术语解释它就太好了。 最佳
我正在尝试使用API使用户的Facebook Pages具有已关联的Instagram企业帐户: https://graph.facebook.com/v2.7/me/accounts?field
如何导出我通过调用 GraphPlot 获得的输出的调整大小版本 (或 TreePlot 如果它们产生不同的输出)到 jpg 文件? 目前,我只是调用 Export[file_name, G]在哪里
如何在使用 gremlin 查询创建边缘之前检查边缘是否已存在?如何更新现有边缘而不是删除并重新创建? 最佳答案 我不确定您是否还在寻找答案;然而,简单的答案是 Cosmos DB 在 Gremlin
我使用的是 Xcode 10.2.1 和 macOS Catalina Developer Beta 2。每当我尝试使用内存图调试器时,我都会收到此错误: Memory Graph Debugger:
我正在设置一个机器人以在Facebook页面上自动发布。但是,当我运行脚本时,图形API会引发以下错误: Graph returned an error: (#200) Requires either
如何制定包含非英语字符(例如日耳曼语Umlauts)的Microsoft Graph /myOrganization/users OData查询? 例子: 我的租户中有一个名为“ThomasMülle
我正在寻找发布目标帖子时可以与Facebook Graph API一起使用的国家/州/城市列表。 我在this页面上找到了一个JSON文件,但是该文件无法正确解析,我也怀疑它是否可以用于发布目标,因为
关于 Graph API,帖子的分享数、帖子见解的分享数和页面上显示的分享数不相同。我假设这些代表相同的计数。我的假设错了吗? 来自帖子: https://graph.facebook.com/XXX
我正在尝试访问作为嵌套子站点一部分的列表的项目,如下所示: https://{mytenant}.sharepoint.com/ vendorSiteCollection/ v
我打算开发一个应用程序,但开发人员告诉我每个 IP 每 600 秒有 600 次调用的限制。该应用程序有很多场景,这还不够。有没有办法以某种方式增加限制?或者 Facebook 是否提供任何高级帐户或
我在 Neo4j 中创建了一张伦敦地铁 map 。站点通过 :CONNECTED_TO 关系连接,时间值表示停止之间需要多长时间(目前这些是我为测试输入的随机值)。位于多条线路上的车站每条线路都有一个
我正在尝试拉回所有用户的列表,我的预期结果将是大约 20,000 个用户。 图表似乎将我限制为 1000。 图调用https://graph.microsoft.com/v1.0/users返回 10
我是一名优秀的程序员,十分优秀!