我有一个工作流程,我将Office文件上传到OneDrive,在Office Online编辑器中将其打开,然后在关闭编辑器后再次下载该文件。 (这是一个教育场景,学生在平板电脑上工作,他们必须“上交”他们的文档。)
我的问题:我怎么知道在线编辑器已关闭,和/或所有更新在OneDrive中都可用?
我尝试了Sharepoint API,MS Graph API,根文件夹增量,Webhooks:它们都告诉我有关文件更改和TimeLastModified的信息。
不幸的是,如果您在Office Online编辑器中的OneDrive中打开一个大型Office文档,进行更改,然后关闭编辑器,则可能需要一分钟之久才能更新OneDrive。通常,第一次更新会在6秒内完成,但有时会进行第二次更新(似乎与在线编辑器中的30秒“自动保存”计时器有关)。
我有一种感觉,Sharepoint知道的比了解的更多。在线编辑器使用WOPI,并且据说WOPI在打开和关闭编辑器时调用锁定/解锁。但是如何访问此信息。
有人尝试过吗:在线编辑后下载文件?
在这篇文章中提及Ryan Gregg,是因为他被邀请在有关OneDrive API的Ignite会话中提问;-)
非常感谢您对此提供的帮助,
卡斯珀
修改
正如dalibor建议的那样,我确实尝试了Graph更改通知(我认为它们以前称为webhooks),并轮询TimeLastModified。两者都有效,但是我的主要问题是我看不到“文件已更改”通知是否是最后一个,或者“关闭我的在线编辑器”操作是否会导致更多保存。
同时,我在Sharepoint文件(https://msdn.microsoft.com/en-us/library/office/jj247073.aspx)上尝试了LockedByUser属性。此属性有点难读(MSGraph中尚不可用,Sharepoint API似乎要求直接用户/密码登录)。但是它确实指示在线编辑器是否打开。 但是,如果关闭在线编辑器,则LockedByUser属性将立即清除,但最终保存仍可以在以后进行。否则,如果没有任何更改,将根本没有最终的保存。因此,我们仍然不确定在线编辑停止后何时更新文件。
NB:我们自己实现WOPI确实可行,我们也尝试过。但是,如下所示,这需要与存储合作伙伴不同的工作流程。
答案 0 :(得分:0)
除非您已经实际注册为Microsoft存储合作伙伴并开发了自己的WOPI主机,否则我认为您不会获得WOPI锁定/解锁事件,您实际上在其中使用了其他WOPI REST端点来实现Lock端点,从而使您能够编辑在线功能例如CheckFileInfo,GetFile和PutFile ...在这种情况下,您可以通过自己的WOPI主机应用程序收听解锁事件并在其他地方触发其他事件。尽管这是可能的,但我不建议您这样做。另外,如果您已经启动并运行WOPI,则可以执行此上传和下载工作流程,并将文件写入自己的存储中。
其他几种选择: