如何通过SharePoint API用Python自动填充文件夹文件的自定义列
SharePoint中的文件本质是文档库的列表项(List Item),每个文件都关联一个ListItem对象,你可以通过listItemAllFields属性访问和修改自定义字段。以下是实现自动填充Number和Version列的完整方案:
核心思路
- 获取目标文件夹下的所有文件,同时加载文件关联的列表项属性
- 从文件名中提取
Number和Version的值(适配你提供的文件名格式) - 更新每个文件对应的自定义列字段
- 批量提交更新到SharePoint
完整代码示例
import re from office365.sharepoint.client_context import ClientContext from office365.runtime.auth.user_credential import UserCredential def update_file_custom_columns(ctx, folder_relative_path): # 获取目标文件夹 folder = ctx.web.get_folder_by_server_relative_url(folder_relative_path) # 加载文件的Name和关联的列表项属性 files = folder.files ctx.load(files, 'Include(Name, listItemAllFields)') ctx.execute_query() # 批量收集更新操作,提升处理效率 update_operations = [] for file in files: file_name = file.properties['Name'] # 解析文件名:提取Number和Version try: # 去掉文件后缀 name_without_ext = file_name.rsplit('.', 1)[0] # 拆分名称与版本部分 name_part, version_part = name_without_ext.split('-') # 从名称片段提取连续数字作为Number number_match = re.search(r'\d+', name_part) # 从版本片段提取数字作为Version version_match = re.search(r'\d+', version_part) if number_match and version_match: number_val = number_match.group() version_val = version_match.group() # 获取文件对应的列表项 list_item = file.listItemAllFields # 更新自定义列(注意:使用列的**内部名称**,而非显示名称) list_item.set_property('Number', number_val) list_item.set_property('Version', version_val) list_item.update() update_operations.append(list_item) print(f"待更新:{file_name} -> Number={number_val}, Version={version_val}") else: print(f"跳过:无法从{file_name}提取有效数字/版本") except ValueError: print(f"跳过:{file_name}格式不符合预期(未找到'-'分隔符)") # 批量提交更新请求 if update_operations: ctx.execute_query() print("所有自定义列更新完成") # 初始化上下文(替换为你的SharePoint站点URL和凭据) ctx = ClientContext("https://your-sharepoint-site-url").with_credentials(UserCredential("your-username", "your-password")) # 调用函数更新自定义列(替换为你的文件夹相对路径) update_file_custom_columns(ctx, "/sites/YourSite/Shared Documents/TargetFolder")
关键注意事项
- 自定义列的内部名称:必须使用SharePoint列的内部名称(而非显示名称)。获取方式:进入列的设置页面,查看URL中
Field=后面的字符串(比如显示名称为Number,内部名称可能是Number或_x004e_umber) - 文件名解析逻辑:代码中的正则匹配基于
abc123-1.pdf格式编写,若你的文件名格式有变化,需调整正则表达式适配 - 权限要求:确保账号拥有文档库的编辑权限,否则会触发权限错误
- 批量更新优化:采用批量收集操作后一次性提交的方式,减少对SharePoint的请求次数,提升大量文件的处理效率
内容的提问来源于stack exchange,提问作者Ugo Labbé
相关产品推荐
相关产品推荐

