我想使用Office.js / Outlook方法addFileAttachmentAsync将OneDrive中的文件添加到新的合成邮件中。该文件由另一个Office365用户与我共享。如果我使用Onedrive界面创建链接并添加文本“&download = 1”,则所有操作都像一个超级按钮。
如果我使用Graph createLink创建链接,我们确实会获得一个URI,并且该URI似乎可以正常工作,但上传完成后会立即产生错误。
如何使用可工作的Graph生成URI?
预先感谢您的努力!
Wilco
手工制作的URI如下所示:
和Graph生成的URI如下所示:
即使我们确保链接可以公共访问,也不能将其用于addFileAttachmentAsync。通过以下命令使用Graph Createlink:
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/EaNXPGdDsBBDo_uVZPK2c0EB6gHaA3ASNj5ly0QyzKGgzQ?e=G30d5L
请求的代码示例
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)
})
仅手工链接Url有效。我的问题是我想用Graph API创建一个链接。
答案 0 :(得分:2)
您想为addFileAttachmentAsync
API使用的URI应该可以公开访问。
要进行测试,如果打开全新的私有浏览器或隐身模式,则无需登录即可访问URI。
在这种情况下,第一个URI(附加了&download = 1)是可公开访问的,而第二个URI无法公开访问。
请检查您的图形API以生成可公开访问的URI。
答案 1 :(得分:1)
事实证明,此问题的解决方案比预期的要简单。显然,Graph API提供的URL并不能解决问题。 Outlook加载项团队对此很清楚。剩下的最大问题是;如何从Graph获取正确的URL。
正确的答案是;您不需要像createLink这样的功能!如果仅使用OneDrive文件项的ID来获取属性(例如https://graph.microsoft.com/v1.0//me/drive/items/01ATEIIBJLT455YK5FLISCBD37Y7SWE),则会发现一个包含正确URL的属性@ microsoft.graph.downloadUrl。该URL在一个小时的时间内有效,并且可以与Office.js中的addFileAttachmentAsync一起成功使用
感谢您为我的问题投入的时间。
Wilco。