我正在尝试编写一个R脚本,该脚本将访问存储在我公司的Sharepoint页面上的Excel文件,以便我可以进行一些计算并绘制结果。我已尝试过各种方法(download.file,RCurl getURL(),gdata),但我似乎无法弄清楚如何做到这一点。网址为HTTPS,应该有用户名和密码。我与这段代码最接近:
require(RCurl)
URL<-"https://companyname.sharepoint.com/sites/folder/_layouts/15/WopiFrame.aspx?sourcedoc={2DCC2ED7-1C13-4910-AFAD-4A9ACFF1C797}&file=myfile.xlsx&action=default'
f<-getURL(URL,verbose=T,ssl.verifyhost=F,ssl.verifypeer=F,userpwd="mylogin:mypw")
这似乎是连接的(虽然用户名和密码似乎并不重要)并返回
> f
[1] "<html><head><title>Object moved</title></head><body>\r\n<h2>Object moved to <a href=\"https://companyname.sharepoint.com/sites/_layouts/15/WopiFrame2.aspx?sourcedoc={2DCC2ED7-1C13-4910-AFAD-4A9ACFF1C797}&file=MyFile.xlsx&action=default\">here</a>.</h2>\r\n</body></html>\r\n"`
但是,我不知道此时该做什么,或者即使我走在正确的轨道上。任何帮助将不胜感激。
答案 0 :(得分:10)
我用
library(readxl)
read_excel('//companySharepointSite/project/.../ExcelFilename.xlsx', 'Sheet1', skip=1)
注意,没有https:
,有时我必须先打开文件(例如,将//companySharepointSite/project/.../ExcelFilename.xlsx
剪切并粘贴到浏览器的地址栏中)
答案 1 :(得分:3)
我发现其他答案对我不起作用,可能是因为我在Mac上使用,而Mac显然不能与Sharepoint等Microsoft产品一起使用。
最终不得不将其分为两部分:首先将Excel文件下载到磁盘,然后分别读取该Excel文件。
library(httr)
library(readxl)
# the URL of your sharepoint file
file_url <- "https://yoursharepointsite/Documents/yourfile.xlsx"
# save the excel file to disk
GET(file_url,
authenticate(active_directory_username, active_directory_password, "ntlm"),
write_disk("tempfile.xlsx", overwrite = TRUE))
# save to dataframe
df <- read_excel("tempfile.xlsx")
df
# remove excel file from disk
file.remove("tempfile.xlsx")
这可以完成工作,但是如果有人知道如何避免写入磁盘的临时步骤,这将很有趣。
根据您特定的计算机/网络/ Sharepoint配置,您也许还可以仅按this answer使用authenticate(":",":","ntlm")
。
答案 2 :(得分:1)
您可能需要将网络驱动器映射到SharePoint库,以便可以直接连接到它。或者,如果您不想映射网络驱动器,也可以在启动文件夹中放置该文件夹的快捷方式。
示例文件路径: \ company_sharepoint_site \ ssp \ site_name \ sub_site_name \ library_name
示例启动文件夹位置(Windows 10): C:\ Users \ USER_NAME \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup
注意斜杠的方向(“ \”而不是“ /”)很重要,这样您的文件路径将被解释为文件位置,而不是Internet浏览器位置。通过将这样的路径放置在网络驱动器中或作为启动文件夹中的快捷方式,您的PC在启动时应连接到它。
# Load or install readxl
if(require(readxl) == FALSE){
install.packages("readxl")
if(require(readxl)== FALSE){stop("Unable to install and load readxl")}
}
# Define path to data
data_path <- "\\\\company_sharepoint_site\\ssp\\site_name\\sub_site_name\\library_name\\Example.xlsx"
# Pull data
df_employees <- read_xlsx(data_path)
答案 3 :(得分:1)
我的处境与您完全一样。我想使用R编程语言访问一个可在SharePoint网站上找到的excel文件。
我也在Internet上冲浪了很多东西,但没有发现与我的要求相关的任何东西。
然后,我尝试了以下操作: 我已经在本地系统中将sharepoint文件夹制作为网络驱动器文件夹。
然后,我已经从我的机器访问了该excel文件(在sharepoint站点中),而没有访问Web浏览器。
因此,我已经复制了系统中存在的网络路径(它将与您的共享点站点相同,但是没有https / http。 该网站将以“ \”开头,如下所示:“ \ sharepoint.test.com \ folder \ path”)。
启动RStudio并在“环境”部分下选择“导入数据集”选项。
选择“来自Excel”。将打开“导入Excel数据”表格。
在“文件/ URL”字段下:粘贴共享点的网络路径(从您的计算机复制)。
单击“导入”,Sharepoint中的excel文件将成功导入到R中。
请确保该文件不应使用html语言作为输入(即%20和全部),并且应在URL中使用反斜杠作为分隔符。 如您所见,在导入文件时,请提供准确的文件夹名称输入。
例如: Sharepoint.microsoft.com-Sharepoint的域 部门名称-文件夹名称 项目名称-文件夹名称 Sample.xlsx-文件名 因此,您要导入数据集的网址应为:
“ \ Sharepoint.microsoft.com \部门名称\项目名称\ Sample.xlsx”。
谢谢!
答案 4 :(得分:1)
我无法使用上面R中答案的提示来完成此操作(我尝试了本网站上发现的许多方法)。但是,仅在上面突出显示@RyanBradley的响应,尤其是@ ZS27的响应:
我不得不使用 OneDrive桌面客户端(Windows)允许我sync
将该文件夹保存到计算机上。较新版本的SharePoint(例如MS Teams中的版本)在与OneDrive交互的文档库/文件夹中具有sync
按钮或功能。
这等效于将文件夹安装为网络驱动器,因此R与文件交互,就好像它是文件系统的一部分一样。为我工作。
答案 5 :(得分:0)
答案 6 :(得分:0)
如果上述方法不起作用,请尝试以下语法[注意斜线方向]:
"\\gov.sharepoint.com@SSL/DavWWWRoot/sites/SomePath/SomePath/SomePath/SomeFile"
有关语法和正在发生的事情的更多信息,请参见此处:
Connect to a site via SSL/DavWWWRoot not usual URL? Why does this make a difference?