我有一个工作流程,我将 Office 文件上传到 OneDrive,在 Office Online 编辑器中打开它,然后在关闭编辑器后再次下载文件。(这是一个教育场景,学生在平板电脑上工作,他们必须“交出”他们的文件。)
我的问题:我怎么知道在线编辑器已关闭,和/或 OneDrive 中的所有更新都可用?
我尝试过 Sharepoint API、MS Graph API、根文件夹增量、Webhooks:它们都告诉我有关文件更改和 TimeLastModified 的信息。
不幸的是,如果您在 Office Online 编辑器中的 OneDrive 中打开一个大型 Office 文档,进行更改,然后关闭编辑器,则可能需要一分钟时间才能更新 OneDrive。通常第一次更新在 6 秒内,但有时会发生第二次更新(似乎与在线编辑器中的 30 秒“自动保存”计时器有关)。
我有一种感觉,Sharepoint“知道”的比它说的要多。在线编辑器使用 WOPI,据说 WOPI 在打开和关闭编辑器时会调用 lock/unlock。但是如何访问此信息..
有没有人试过这个:在线编辑后下载你的文件?
在这篇文章中提到 Ryan Gregg 是因为他受邀在 OneDrive API 的 Ignite 会话中提问;-)
非常感谢您提供的任何帮助,
Casper
编辑
正如 dalibor 建议的那样,我确实尝试了 Graph 更改通知(我认为它们曾经被称为 webhook),并轮询 TimeLastModified。两者都有效,但我的主要问题是我看不到“文件已更改”通知是否是最后一个通知,或者“关闭我的在线编辑器”操作是否会导致更多保存。
同时,我在 Sharepoint 文件 ( https://msdn.microsoft.com/en-us/library/office/jj247073.aspx ) 上尝试了 LockedByUser 属性。这个属性有点难以阅读(在 MSGraph 中尚不可用,Sharepoint API 似乎需要直接用户/密码登录)。但它确实表明在线编辑器是否打开。但是,如果您关闭在线编辑器,LockedByUser 属性会立即被清除,但最终保存仍可在以后进行。或者根本没有最终保存,如果没有任何改变。因此,在线编辑停止后,我们仍然无法确定文件何时更新。
注意:自己实施 WOPI 确实有效,我们也尝试过。但正如下面所建议的,这需要不同的工作流程作为存储合作伙伴。