我正在使用Microsoft图谱API在一个驱动器上创建excel文件。创建excel文件后,我需要在浏览器中打开该文件。 Microsoft graph api没有提供任何链接来在线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图形API,这是在excel online中打开excel的正确方法吗?什么是正确的方法
答案 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请求参数。