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

时间:2016-06-29 01:02:49

标签: office365 onedrive microsoft-graph

我正在使用Microsoft图谱API在一个驱动器上创建excel文件。创建excel文件后,我需要在浏览器中打开该文件。 Microsoft graph api没有提供任何链接来在线excel打开项目/文件。所以要解决这个问题,当我在创建excel文件后得到如下所示的响应时,

enter image description here

我使用响应中的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图形API,这是在excel online中打开excel的正确方法吗?什么是正确的方法

2 个答案:

答案 0 :(得分:1)

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

如果你想在过渡期间稍微保护你的代码,很可能一旦这个问题得到解决,webUrl就会添加查询参数,但不幸的是,这不是100%保证其他东西比修复版还要导致查询参数出现。

答案 1 :(得分:1)

  

Microsoft图形api没有提供任何链接来打开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 可以在线,以只读或读写模式打开办公室中的项目,具体取决于POST请求参数。