You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过LotusScript将文件保存至SharePoint目录?

从LotusScript代理直接将文件保存至SharePoint的可行方案

方案1:利用SharePoint REST API(推荐)

LotusScript可通过NotesHTTPRequest对象发送HTTP请求调用SharePoint REST API,实现文件上传,核心步骤如下:

  • 获取访问令牌:
    • SharePoint Online:通过Azure AD的OAuth 2.0流程获取Bearer令牌,在LotusScript中构造POST请求到Azure token端点,传入客户端ID、密钥、租户ID等参数即可。
    • SharePoint On-Prem:使用NTLM认证,通过NotesHTTPRequest的SetCredentials方法设置对应凭据。
  • 构造上传请求:调用/_api/web/getfolderbyserverrelativeurl('<文件夹路径>')/files/add(overwrite=true,url='<文件名>')接口,将CSV二进制内容作为请求体发送。
  • LotusScript代码片段:
    Dim http As NotesHTTPRequest
    Dim token As String
    Dim csvData As Variant
    Dim folderUrl As String
    Dim fileName As String
    
    ' 初始化HTTP请求对象
    Set http = CreateObject("Notes.HTTPRequest")
    http.PreemptiveAuth = True
    
    ' 1. 获取认证令牌(SharePoint Online场景,需自行实现令牌获取逻辑)
    ' token = "获取到的Bearer令牌"
    
    ' 2. 读取本地生成的CSV二进制数据
    Dim stream As NotesStream
    Set stream = session.CreateStream()
    If stream.Open("<本地临时CSV路径>") Then
        csvData = stream.Read()
        stream.Close()
    End If
    
    ' 3. 发起上传请求
    folderUrl = "/sites/你的站点名/Shared Documents/报告目录"
    fileName = "report_" & CStr(Now()) & ".csv"
    Dim url As String
    url = "https://你的租户.sharepoint.com" & folderUrl & "/_api/web/getfolderbyserverrelativeurl('" & folderUrl & "')/files/add(overwrite=true,url='" & fileName & "')"
    
    http.SetHeader "Authorization", "Bearer " & token
    http.SetHeader "Content-Type", "text/csv"
    
    Dim response As String
    response = http.Post(url, csvData)
    
    ' 校验上传结果
    If http.StatusCode = 200 Then
        ' 上传成功处理逻辑
    Else
        ' 错误处理逻辑
    End If
    

方案2:映射SharePoint文档库为网络驱动器(原生方式)

若Domino服务器可访问SharePoint,可将文档库映射为本地网络驱动器,完全复用原有写入共享目录的逻辑:

  • 操作步骤:在Domino服务器上,通过Windows“映射网络驱动器”功能,将SharePoint文档库路径(如\\你的租户.sharepoint.com@SSL\DavWWWRoot\sites\你的站点名\Shared Documents)映射为盘符(如Z:)。
  • 使用方式:LotusScript生成CSV后,直接写入该映射盘符的对应路径即可,无需修改原有代码。
  • 注意事项:确保Domino运行账号拥有文档库写入权限,且网络连接稳定,避免映射驱动器断开导致上传失败。

方案3:调用SharePoint Client Object Model(COM组件)

若Domino服务器安装了SharePoint Client Components SDK,可通过COM调用Client Object Model上传文件:

  • 操作前提:注册Microsoft.SharePoint.Client.dll等相关COM组件,确保版本与SharePoint环境匹配。
  • LotusScript代码片段:
    Dim ctx As Object
    Dim web As Object
    Dim folder As Object
    Dim fileCreationInfo As Object
    Dim csvData As Variant
    
    ' 初始化ClientContext
    Set ctx = CreateObject("Microsoft.SharePoint.Client.ClientContext")
    ctx.Url = "https://你的租户.sharepoint.com/sites/你的站点名"
    
    ' 设置SharePoint Online凭据
    Dim creds As Object
    Set creds = CreateObject("Microsoft.SharePoint.Client.SharePointOnlineCredentials")
    creds.Initialize "<账号>", "<密码>"
    ctx.Credentials = creds
    
    ' 获取目标文件夹
    Set web = ctx.Web
    Set folder = web.GetFolderByServerRelativeUrl("/sites/你的站点名/Shared Documents/报告目录")
    ctx.Load folder
    ctx.ExecuteQuery()
    
    ' 准备上传信息
    Set fileCreationInfo = CreateObject("Microsoft.SharePoint.Client.FileCreationInformation")
    fileCreationInfo.Content = csvData ' CSV二进制数据
    fileCreationInfo.Url = "report.csv"
    fileCreationInfo.Overwrite = True
    
    Dim file As Object
    Set file = folder.Files.Add(fileCreationInfo)
    ctx.Load file
    ctx.ExecuteQuery()
    
  • 注意事项:该方式依赖服务器SDK安装,维护成本较高,适合对稳定性要求高且有运维支持的场景。

内容的提问来源于stack exchange,提问作者Chris Richards

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:55:06