0

0

使用Python API更新SharePoint文件自定义属性(列)教程

碧海醫心

碧海醫心

发布时间:2025-12-12 22:23:36

|

262人浏览过

|

来源于php中文网

原创

使用Python API更新SharePoint文件自定义属性(列)教程

本教程详细指导如何利用pythonoffice365-rest-python-client库,高效地更新sharepoint文件中自定义列的属性值。文章涵盖了环境准备、核心函数实现、认证配置及实际使用示例,并提供了优化后的代码逻辑,旨在帮助开发者便捷地管理sharepoint文件的元数据。

前言

在企业内容管理中,SharePoint作为广泛使用的协作平台,允许用户为文件定义和存储自定义元数据,即自定义属性或列。这些元数据对于文件的分类、搜索和自动化流程至关重要。本教程将深入探讨如何通过Python编程,利用Office365-REST-Python-Client库来程序化地更新SharePoint中文件的自定义属性,从而实现高效的元数据管理。

准备工作

在开始之前,请确保您的开发环境已满足以下条件:

  1. Python环境: 确保已安装Python 3.6或更高版本。
  2. 安装Office365-REST-Python-Client库: 使用pip安装该库:
    pip install Office365-REST-Python-Client
  3. SharePoint应用注册: 为了通过API访问SharePoint,您需要注册一个SharePoint应用程序并获取其Client ID和Client Secret。这通常在SharePoint站点的_layouts/15/appregnew.aspx和_layouts/15/appinv.aspx页面完成,并授予必要的权限(例如,对网站集或特定列表的写入权限)。
  4. SharePoint站点URL: 获取您要操作的SharePoint站点的基础URL(例如 https://yourcompany.sharepoint.com/sites/yoursite)。

核心功能实现

更新SharePoint文件属性的关键在于正确地获取文件对象,然后设置其listItemAllFields的属性。为了提高效率,我们建议一次性设置所有需要更新的属性,然后执行一次提交操作。

以下是一个实现此功能的Python函数:

立即学习Python免费学习笔记(深入)”;

多奥淘宝客程序API免费版 F8.0
多奥淘宝客程序API免费版 F8.0

多奥淘宝客程序免费版拥有淘宝客站点的基本功能,手动更新少,管理简单等优点,适合刚接触网站的淘客们,或者是兼职做淘客们。同样拥有VIP版的模板引擎技 术、强大的文件缓存机制,但没有VIP版的伪原创跟自定义URL等多项创新的搜索引擎优化技术,除此之外也是一款高效的API数据系统实现无人值守全自动 化运行的淘宝客网站程序。4月3日淘宝联盟重新开放淘宝API申请,新用户也可使用了

下载
import os
from office365.sharepoint.client_context import ClientContext
from office365.runtime.auth.client_credential import ClientCredential

def update_sp_file_property(
    ctx: ClientContext, filepath: str, properties: dict
) -> None:
    """
    更新SharePoint文件的自定义属性(列)。

    Args:
        ctx: SharePoint客户端上下文对象。
        filepath: 文件的服务器相对路径(例如 "/sites/mysite/Shared Documents/General/my_file.docx")。
        properties: 一个字典,键为属性(列)的内部名称,值为要更新的属性值。
    Returns:
        None
    """
    try:
        # 获取文件对应的列表项的所有字段
        # 注意:这里的.listItemAllFields会返回一个ListItem对象,包含文件的所有元数据
        file_item = ctx.web.get_file_by_server_relative_path(filepath).listItemAllFields

        # 遍历所有要更新的属性,并为ListItem对象设置属性
        # persist_changes=True 确保这些更改会被标记并最终提交
        for k, v in properties.items():
            file_item.set_property(name=k, value=v, persist_changes=True)
            print(f'为文件 "{os.path.basename(filepath)}" 设置属性 "{k}" : "{v}"')

        # 提交所有属性更改到SharePoint
        file_item.update().execute_query()
        print(f'成功更新文件 "{os.path.basename(filepath)}" 的所有指定属性。')

    except Exception as e:
        print(f"更新文件 '{filepath}' 属性时发生错误: {e}")
        # 在实际应用中,您可能需要更详细的错误处理和日志记录

代码解析:

  • ClientContext: 这是与SharePoint站点进行交互的入口点。它承载了认证信息和站点URL。
  • get_file_by_server_relative_path(filepath): 通过文件的服务器相对路径获取文件对象。
  • .listItemAllFields: 这一步至关重要,它获取了与文件关联的列表项(ListItem)对象。文件的自定义属性实际上是存储在这个列表项上的。
  • set_property(name=k, value=v, persist_changes=True): 为列表项设置单个属性。persist_changes=True确保这些更改在后续的update()操作中被提交。
  • file_item.update().execute_query(): 这是提交所有更改到SharePoint服务器的关键步骤。update()方法将标记的更改打包,execute_query()则发送HTTP请求执行这些更改。我们将所有set_property操作累积起来,然后一次性调用update().execute_query(),这比每次设置一个属性就执行一次查询效率更高。

使用示例

下面是一个完整的示例,演示如何使用上述函数来更新SharePoint文件的自定义属性:

import os
from office365.sharepoint.client_context import ClientContext
from office365.runtime.auth.client_credential import ClientCredential

# 假设您的配置信息存储在一个字典或配置文件中
# 这里为了示例方便,直接定义
cfg = {
    "SHAREPOINT": {
        "CLIENT_ID": "YOUR_CLIENT_ID",       # 替换为您的Client ID
        "CLIENT_SECRET": "YOUR_CLIENT_SECRET", # 替换为您的Client Secret
        "BASE_URL": "https://yourcompany.sharepoint.com/sites/yoursite" # 替换为您的SharePoint站点URL
    }
}

# 辅助函数:创建SharePoint客户端上下文
def get_client_context(client_id: str, client_secret: str, base_url: str) -> ClientContext:
    """
    创建并返回SharePoint客户端上下文。
    """
    credentials = ClientCredential(client_id, client_secret)
    ctx = ClientContext(base_url).with_credentials(credentials)
    return ctx

# --- 定义参数 ---
client_id = cfg["SHAREPOINT"]["CLIENT_ID"]
client_secret = cfg["SHAREPOINT"]["CLIENT_SECRET"]
base_url = cfg["SHAREPOINT"]["BASE_URL"]

# 创建SharePoint上下文进行认证
ctx = get_client_context(
    client_id=client_id, client_secret=client_secret, base_url=base_url
)

# 定义要更新的文件路径
# 请替换为您的文件在SharePoint中的服务器相对路径
# 例如:"/sites//Shared Documents/General/your_document.pdf"
filepath = "/sites/mysite/Shared Documents/General/MyTestDocument.docx"

# 定义要更新的属性及其新值
# 键是SharePoint列的内部名称,值是您想要设置的新值
properties_to_update = {
    "Property1": "NewValueA",
    "Property2": "NewValueB",
    "CustomColumnName": "Updated Text"
}

# --- 运行函数更新文件属性 ---
print(f"尝试更新文件 '{filepath}' 的属性...")
update_sp_file_property(ctx=ctx, filepath=filepath, properties=properties_to_update)

重要提示:

  • 请务必将YOUR_CLIENT_ID、YOUR_CLIENT_SECRET和https://yourcompany.sharepoint.com/sites/yoursite替换为您的实际凭据和站点URL。
  • filepath必须是文件的服务器相对路径。您可以通过在SharePoint中右键点击文件,选择“详细信息”或“属性”来查找它。
  • properties_to_update字典中的键必须是SharePoint列的内部名称,而不是显示名称。您可以通过访问列表或库设置,然后查看列的详细信息来找到内部名称。

注意事项

  1. 权限管理: 确保您的SharePoint应用程序拥有足够的权限(例如,“写入”权限)来修改目标文件所在的文档库或列表。权限不足会导致API调用失败。
  2. 属性内部名称: 在properties字典中使用的键必须是SharePoint列的内部名称(Internal Name)。显示名称(Display Name)可能包含空格或特殊字符,通常不用于API调用。
  3. 文件路径准确性: filepath参数必须是文件的完整服务器相对路径,包括站点路径和文档库路径。
  4. 错误处理: 在生产环境中,强烈建议对API调用进行更健壮的错误处理,例如使用try-except块捕获ClientRequestException等特定异常,并记录详细的错误信息。
  5. 批量更新效率: 本教程提供的优化方法在一次调用中更新多个属性,比为每个属性单独发送请求更高效。如果需要批量更新大量文件的属性,可以考虑将文件路径列表作为输入,并在一个循环中调用此函数。

总结

通过本教程,您应该已经掌握了如何使用Python的Office365-REST-Python-Client库来程序化地更新SharePoint文件的自定义属性。这种能力极大地简化了SharePoint元数据的管理工作,使得自动化报告

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

772

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

661

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

764

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

679

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1385

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

570

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

579

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

730

2023.08.11

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

8

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 14.9万人学习

Django 教程
Django 教程

共28课时 | 3.4万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号