如何使用图形 api 在浏览器中打开一个业务驱动器中的 excel 文件

How to open excel file in one drive for business in browser using graph api

我正在使用 Microsoft graph API 在一个商业驱动器上创建 excel 文件。创建 excel 文件后,我需要在浏览器中打开该文件。 Microsoft graph api 不提供任何 link 在线打开 item/file in excel。所以为了解决这个问题,当我在创建 excel 文件后得到如下所示的响应时,

我使用响应中的 webUrl 属性 创建如下所示的路径,然后可以使用 window.open javascript 方法在 excel 在线打开此文件.

                                if (searchFileInfo.file) {
                                var index1 = searchFileInfo.eTag.indexOf('{'), index2 = searchFileInfo.eTag.indexOf('}');;
                                etag = searchFileInfo.eTag.substr(index1, index2);
                                var filePath = searchFileInfo.webUrl.substr(0, searchFileInfo.webUrl.indexOf('/Documents/InfoClientAddIn/' + excelFile()));
                                filePath = filePath + "/_layouts/15/WopiFrame.aspx?sourcedoc=" + etag + "&file=" + excelFile() + "&action=default";
                                defer.resolve(filePath);
                            } else {
                                defer.reject();
                            }

如果我使用的是 Microsoft graph API,这是在 excel 中在线打开 excel 的正确方法吗?正确的方法是什么

webUrl 返回文件下载而不是 OneDrive for Business 文件的实际 Web 体验是一种临时情况。 我们希望在以后的版本中解决该问题,因此您不应依赖返回的当前 URL 格式。通常,对从 API 返回的任何绝对 URL 进行路径数学计算总是很危险的。

如果你想在此期间保护你的代码,一旦这个问题得到解决,webUrl 很可能会添加查询参数,但不幸的是,这不能 100% 保证除修复也不会导致查询参数出现。

Microsoft graph api doesnt give any link to open the item/file in excel online

我认为是的。 使用 createLink,例如 POST 参数:{"type": "view", "scope": "anonymous"},你会得到如下响应:

{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#permission",
"@odata.type": "#microsoft.graph.permission",
"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"roles": [
    "read"
],
"link": {
    "scope": "anonymous",
    "type": "view",
    "webUrl": "https://stuff-ponting-to-your-company/_layouts/15/guestaccess.aspx?guestaccesstoken=xxxxxxxxxx%3d&docid=xxxxxxxxx&rev=1"
}
}

webUrl在office online中以只读或读写模式打开项目,具体取决于POST请求参数。