我想使用Office.js / Outlook方法addFileAttachmentAsync将OneDrive中的文件添加到新的组合邮件中。此文件由另一位Office365用户与我共享。如果我使用Onedrive界面创建一个链接并添加文本'&download = 1',它就像一个魅力。
如果我使用Graph createLink创建链接,我们会获得一个URI,并且该URI似乎可以正常工作,但一旦上传完成就会生成错误。
如何使用Graph生成URI?
在此先感谢您的努力!
威尔科
手工制作的URI如下所示:
Graph生成的URI如下所示:
即使我们确保链接是公共可访问的,我们也不能将它用于addFileAttachment Async。使用Graph Create Link使用以下命令:
https://graph.microsoft.com/v1.0/me/drive/items/01ATENY5KYPNW2NH64F5CJEWPK4DYIHSX7/createLink
使用以下正文{“type”:“edit”,“scope”:“anonymous”}传递webUrl:
如果我使用OneDrive接口创建相同的链接,结果如下:
第二个URL有效。唯一的区别是最后一部分?e = fCWoUK。如何从Graph获得所需的最后一部分?
结果图像
更长的网址(手工制作)的结果:https://softmakersbv-my.sharepoint.com/:i:/g/personal/wilcotroost_softmakers_nl/EUuTYN05rlNNpYn0IG7FMfkBnnCu6yUUdbj72YcsTc5Wow?e=jWU5Mw
请求的代码示例
let _fileName = 'Picos de Europa'
// graph url ..v1.0/me/drive/items/01ATENY5KYPNW2NH64F5CJEWPK4DYIHSX7/createLink {"type": "edit", "scope": "anonymous"}
//let _fileUrl = 'https://softmakersbv-my.sharepoint.com/:i:/g/personal/tim_softmakers_nl/EVh7baaf3C9Eklnq4PCDyv8BbjtwqSi-a92qYg0EYEE0kA'
// handmade url (create link from the onedrive interface)
let _fileUrl = 'https://softmakersbv-my.sharepoint.com/:i:/g/personal/tim_softmakers_nl/EVh7baaf3C9Eklnq4PCDyv8BbjtwqSi-a92qYg0EYEE0kA?e=fCWoUK'
Office.context.mailbox.item.addFileAttachmentAsync(_fileUrl + '&download=1', _fileName, {}, (result) => {
console.log(result)
})
只有手工链接网址工作。我的问题是我想用Graph API创建一个链接。
您要用于addFileAttachmentAsync
API的URI应该是可公开访问的。
要测试,如果您打开一个全新的私人浏览器或隐身模式,您应该能够在不登录的情况下访问URI。
在这种情况下,第一个URI(附加&download = 1)可公开访问,而第二个URI则不公开。
请检查您的图表API,以生成可公开访问的URI。
证明这个问题的解决方案比预期更简单。很明显,Graph API给出的URL没有减少结果。 Outlook Add-Ins团队对此很清楚。最大的问题是;如何从Graph获取正确的URL。
正确的答案是;你不需要像createLink这样的功能!如果您只是使用OneDrive文件项的ID来获取属性(如https://graph.microsoft.com/v1.0//me/drive/items/01ATEIIBJLT455YK5FLISCBD37Y7SWE),您将找到一个包含正确URL的属性@ microsoft.graph.downloadUrl。此URL在一小时的时间段内有效,并且可以与Office.js中的addFileAttachmentAsync一起成功使用
感谢您的人们投入我的问题。
Wilco的。