如何使用OneDrive for Business添加具有addFileAttachment同步的文件

问题描述 投票:0回答:2

我想使用Office.js / Outlook方法addFileAttachmentAsync将OneDrive中的文件添加到新的组合邮件中。此文件由另一位Office365用户与我共享。如果我使用Onedrive界面创建一个链接并添加文本'&download = 1',它就像一个魅力。

如果我使用Graph createLink创建链接,我们会获得一个URI,并且该URI似乎可以正常工作,但一旦上传完成就会生成错误。

如何使用Graph生成URI?

在此先感谢您的努力!

威尔科

手工制作的URI如下所示:

https://softmakersbv-my.sharepoint.com/:i:/g/personal/tim_softmakers_nl/EWu4nf4kBMBKv4xrfGe91JABLpUSye9VgVJgxhlapA2eiQ?e=1KWtPD

Graph生成的URI如下所示:

https://softmakersbv-my.sharepoint.com/personal/tim_softmakers_nl/Documents/TimDocuments-00003/2019/04/19.04.00188.png


即使我们确保链接是公共可访问的,我们也不能将它用于addFileAttachment Async。使用Graph Create Link使用以下命令:

https://graph.microsoft.com/v1.0/me/drive/items/01ATENY5KYPNW2NH64F5CJEWPK4DYIHSX7/createLink

使用以下正文{“type”:“edit”,“scope”:“anonymous”}传递webUrl:

https://softmakersbv-my.sharepoint.com/:i:/g/personal/tim_softmakers_nl/EVh7baaf3C9Eklnq4PCDyv8BbjtwqSi-a92qYg0EYEE0kA

如果我使用OneDrive接口创建相同的链接,结果如下:

https://softmakersbv-my.sharepoint.com/:i:/g/personal/tim_softmakers_nl/EVh7baaf3C9Eklnq4PCDyv8BbjtwqSi-a92qYg0EYEE0kA?e=fCWoUK

第二个URL有效。唯一的区别是最后一部分?e = fCWoUK。如何从Graph获得所需的最后一部分?


结果图像

小网址的结果(由图表返回):https://softmakersbv-my.sharepoint.com/:i:/g/personal/wilcotroost_softmakers_nl/EaNXPGdDsBBDo_uVZPK2c0EB6gHaA3ASNj5ly0QyzKGgzQ?e=G30d5L

更长的网址(手工制作)的结果: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创建一个链接。

outlook-addin office-js outlook-web-addins
2个回答
2
投票

您要用于addFileAttachmentAsync API的URI应该是可公开访问的。

要测试,如果您打开一个全新的私人浏览器或隐身模式,您应该能够在不登录的情况下访问URI。

在这种情况下,第一个URI(附加&download = 1)可公开访问,而第二个URI则不公开。

请检查您的图表API,以生成可公开访问的URI。


1
投票

证明这个问题的解决方案比预期更简单。很明显,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的。

© www.soinside.com 2019 - 2024. All rights reserved.