目录
介绍
背景
安装
认证方式
兴趣点
这是关于使用Python与开源Python库Shareplum进行Sharepoint交互的教程。在本文中,我们将介绍安装Shareplum,与Sharepoint帐户建立连接并创建文档库,将记录添加到文档库,更新文档库中的现有记录,从文档库中检索记录,以及以后删除文件库中的文件。
最近,我正在一个项目中,我们曾经从该项目中提取信息。现在,需要将应用程序与现有的Sharepoint工作流集成在一起。但是由于该项目是使用Python和Django构建的,因此我不得不找到一种使用Python与Sharepoint进行交互的方法,否则我将不得不使用ASP.NET来创建Web API,然后在应用程序中使用它。与使用CSOM一样,您可以使用ASP.NET与Sharepoint进行交互,但这不是一个可行的选择。因此,我必须搜索一个支持使用Python与Sharepoint进行交互的原因的Python库。经过大量搜索并找到解决方法之后,最终,我找到了Shareplum,它是Python中的一个开源项目,可让您与Sharepoint进行交互,从而减轻了您的繁重工作,并使您专注于自己的任务。这是我写的两个系列文章。以下是第一个讨论使用Sharepoint List的链接:
打开命令提示符/Powershell/Terminal,然后使用pip输入以下内容进行安装:
pip install shareplum
如果已安装Git,则可以从源代码中按如下所示安装它:
git clone git://github.com/jasonrollins/shareplum
cd shareplum
python setup.py install
我们将通过提供凭据来访问Sharepoint服务器,从而对我们的应用程序进行身份验证,从而使用Shareplum库连接到Sharepoint服务器。
from shareplum import Site
from shareplum import Office365
from shareplum.site import Version
sharepointUsername = "[email protected]"
sharepointPassword = "@123$"
sharepointSite = "https://abc.sharepoint.com/sites/MySite"
website = "https://abc.sharepoint.com"
authcookie = Office365(website, username=sharepointUsername,
password=sharepointPassword).GetCookies()
site = Site(sharepointSite, version=Version.v2016, authcookie=authcookie)
现在我们来看看在Sharepoint站点的文档库中添加一个新的Folder的代码,代码示例如下:
folder = site.Folder('DocumentLibraryName/FolderName')
注意:如果存在一个使用提供FolderName的名称的文件夹,则它将引用该特定文件夹以执行程序中给出的任何操作。如果没有名为FolderName的文件夹,则它将创建一个名为FolderName的新文件夹。
现在,我们将在下面的代码示例中查看在Sharepoint网站上的文档库中添加文本文件的代码:
set_folder = site.Folder('DocumentLibraryName')
folder.upload_file('Enter your text over here','FileName.txt')
在上面的代码片段中,我们已经了解了如何上传纯文本文件,下面让我们看一个将二进制文件(如PDF)上传到我们的文档库的示例。请参阅以下代码段:
set_folder = site.Folder('DocumentLibraryName')
folder.upload_file('Enter your text over here','FileName.txt')
注意:上面的代码片段是一个上传二进制文件的例子,我们可以通过在FileNameByUser中传递适合我们的名称来设置文件在Sharepoint文档库中上传的名称。
现在,我们将在下面的代码示例中查看将元数据添加到文件的代码,该文件先前已上传到Sharepoint网站的文档库中:
instanceOfDocumentLibrary = site.List('DocumentLibraryName')
GetData = instanceOfDocumentLibrary.GetListItems()
for data in GetData:
if(data["Name"]==FileNameByUser)
update_data = [{'ID':data["ID"],'Column_1_Name':'Value','Column_2_Name':'value'}]
instanceOfDocumentLibrary.UpdateListItems(data=update_data,kind='Update')
else:
pass
注意:注意:在Sharepoint中的文档库的内部是一个列表。
让我们讨论一下此代码片段。在这里,我们为Document Library创建了一个实例DocumentLibraryName,然后使用GetListItems 方法检索文档库中所有可用的记录并将其存储在GetData中。然后,我们遍历GetData 列表以找到要在其文件名的帮助下更新元数据的文件。我们还可以通过文档库中可用的任何其他列(属性)来查找文件,例如在我们的案例Column_1_Name或Column_2_Name中,但我们也可以使用ID 列,它是Sharepoint中所有Lists和Document库默认可用的,因为它是唯一且自动递增的列。找到所需文件后,我们使用更新上传文件的元数据的UpdateListItems 方法。
在执行此代码段之前,列Column_1_Name和Column_2_Name的文档库中文件的元数据为空,但该值已存在,因为它是自动递增的列。
注意:在上述情况下,假定每个文件的文件名都是唯一的。如果文件名保持不变,则可以覆盖与该文件名匹配的最后一个文件的数据。
现在,我们将在以下代码示例中查看从我们的Sharepoint网站从文档库下载上传文件的代码。
folder.get_file('FileName.txt')
注意:这是下载非二进制文件的示例。
下面的代码示例中,我们将查看从Sharepoint站点的文档库中获取下载上传文件的代码。
folder.delete_file('FileName.txt')
注意:这是删除非二进制文件的示例。