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

如何为API服务账户授予特定Microsoft Office365文档访问权限?

Microsoft技术栈中读取特定Excel文档的等效操作

在微软技术栈中,对应Google Cloud服务账户的方案是使用Azure AD服务主体,结合OneDrive/SharePoint的权限共享 + Microsoft Graph API来实现脚本对特定Excel文档的读取权限,具体操作如下:

1. 创建Azure AD服务主体

  • 登录Azure门户,进入「Azure Active Directory」→「应用注册」,创建新的应用程序(即服务主体)。
  • 记录生成的客户端ID、租户ID,并创建客户端密钥(或使用证书,安全性更高)。

2. 为服务主体授予Excel文档读取权限

手动共享方式(适用于单个文件)

  • 打开存储Excel文件的OneDrive for Business或SharePoint库,找到目标文件。
  • 在文件的共享设置中,添加服务主体的显示名称(或客户端ID对应的应用名称),授予「读取」权限。

脚本批量授权方式(适用于多文件)

使用PowerShell结合Microsoft Graph PowerShell模块完成:

# 连接到Microsoft Graph
Connect-MgGraph -TenantId "你的租户ID" -ClientId "你的客户端ID" -ClientSecret "你的客户端密钥"

# 替换为目标Excel文件的ID(可通过Graph Explorer查询获取)
$fileId = "目标文件ID"
# 替换为服务主体的应用ID和你的租户域名
$servicePrincipalEmail = "服务主体客户端ID@你的租户域名.onmicrosoft.com"

# 授予读取权限
New-MgDriveItemPermission -DriveItemId $fileId -Roles @("read") -Recipient @{"emailAddress" = $servicePrincipalEmail}

3. 编写脚本读取Excel内容

以Python为例,使用Microsoft Graph SDK实现:

from msgraph import GraphServiceClient
from azure.identity import ClientSecretCredential

# 初始化身份凭证
credential = ClientSecretCredential(
    tenant_id="你的租户ID",
    client_id="你的客户端ID",
    client_secret="你的客户端密钥"
)
graph_client = GraphServiceClient(credential)

# 读取OneDrive中的Excel文件内容
drive_id = "存储文件的驱动器ID"
file_id = "目标Excel文件ID"
worksheet_id = "目标工作表ID"

# 获取工作表指定范围的数据
range_data = graph_client.drives.by_drive_id(drive_id).items.by_drive_item_id(file_id).workbook.worksheets.by_worksheet_id(worksheet_id).range("A1:C10").get()
print(range_data.values)

补充说明

  • 如果脚本部署在Azure服务(如Azure Function、VM)上,可使用Azure AD托管身份替代手动创建的服务主体,无需管理密钥,安全性更强。
  • 所有操作依赖Microsoft Graph API权限,需在应用注册中为服务主体添加「Files.Read」等必要的API权限(需管理员同意)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:05:08