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

求助:如何从One-Drive导入TXT文件内容并修改保存?

可行的OneDrive文本文件读写方案

为什么之前的方法无效

  • File System Object(FSO)仅能访问本地磁盘路径,若OneDrive文件未同步到本地,无法直接读取;即使同步,部分OneDrive在线文件的权限限制也会导致FSO访问失败。
  • SPWeb对象是SharePoint服务器端专属模型,仅适用于SharePoint站点内的文件,OneDrive个人版/独立商业版不属于该范畴,因此无法兼容。

方法1:Microsoft Graph API(通用编程场景)

这是官方推荐的OneDrive文件操作方案,支持所有OneDrive版本(个人/商业版)。

核心步骤

  1. 注册应用并获取权限:在Microsoft Entra ID中注册应用,申请Files.ReadWrite权限(委托权限用于用户身份访问,应用权限用于服务端无交互访问)。
  2. 获取访问令牌:通过OAuth 2.0流程获取令牌(授权码流适合客户端应用,客户端凭证流适合服务端)。
  3. 读取文件内容:调用GET请求获取文件内容,返回值可直接存入变量:
    GET https://graph.microsoft.com/v1.0/me/drive/root:/{文件路径,如Documents/test.txt}:/content
    
  4. 修改后保存:调用PUT请求覆盖原文件:
    PUT https://graph.microsoft.com/v1.0/me/drive/root:/{文件路径}:/content
    Content-Type: text/plain
    {修改后的文本内容}
    

示例C#代码片段

// 读取文件内容
using HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "你的访问令牌");
string fileContent = await client.GetStringAsync("https://graph.microsoft.com/v1.0/me/drive/root:/Documents/test.txt:/content");

// 修改内容
string modifiedContent = fileContent.Replace("旧文本", "新文本");

// 保存修改
var content = new StringContent(modifiedContent, Encoding.UTF8, "text/plain");
await client.PutAsync("https://graph.microsoft.com/v1.0/me/drive/root:/Documents/test.txt:/content", content);

方法2:PowerShell脚本(快速自动化)

适合无需复杂开发的场景,利用Microsoft Graph PowerShell模块快速实现读写。

步骤

  1. 安装模块:
    Install-Module Microsoft.Graph.Files -Force
    
  2. 连接Graph并授权:
    Connect-MgGraph -Scopes Files.ReadWrite
    
  3. 读取文件到变量:
    # 获取文件ID
    $fileId = (Get-MgDriveItem -DriveId "me" -Path "/test.txt").Id
    # 读取内容到变量
    $fileContent = Get-MgDriveItemContent -DriveId "me" -DriveItemId $fileId | Get-Content -Raw
    
  4. 修改并保存:
    $modifiedContent = $fileContent -replace "旧文本", "新文本"
    # 上传覆盖原文件
    Set-MgDriveItemContent -DriveId "me" -DriveItemId $fileId -Content $modifiedContent
    

方法3:VBA(Office环境下)

如果在Office(Excel/Word等)中操作,可通过VBA调用Graph API实现。

示例代码

Sub OneDriveTxtEdit()
    Dim token As String
    Dim fileContent As String
    Dim modifiedContent As String
    
    ' 需预先通过OAuth授权流程获取访问令牌
    token = "你的访问令牌"
    
    ' 读取文件内容
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", "https://graph.microsoft.com/v1.0/me/drive/root:/Documents/test.txt:/content", False
        .SetRequestHeader "Authorization", "Bearer " & token
        .Send
        fileContent = .ResponseText
    End With
    
    ' 修改内容
    modifiedContent = Replace(fileContent, "旧文本", "新文本")
    
    ' 保存修改
    With CreateObject("MSXML2.XMLHTTP")
        .Open "PUT", "https://graph.microsoft.com/v1.0/me/drive/root:/Documents/test.txt:/content", False
        .SetRequestHeader "Authorization", "Bearer " & token
        .SetRequestHeader "Content-Type", "text/plain"
        .Send modifiedContent
    End With
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 06:29:54