【问题标题】:Using R to connect to a sharepoint list使用 R 连接到共享点列表
【发布时间】:2015-05-01 18:29:19
【问题描述】:

有人能够将 R 中的 SharePoint 列表作为数据框导入吗?

我有两个独立的数据源,一个来自 SharePoint 列表,另一个来自我希望对其进行分析的数据库。我能够毫无问题地连接到数据库,但似乎找不到任何可以连接到 SharePoint 列表的东西。

SharePoint 服务器是 2007 年

【问题讨论】:

  • 能举个例子吗?也可以将您的列表导入其他内容(例如 xls、txt ...),然后将其导入 R
  • 嗨@Memo,列表本身基本上只是一个用户可以自己更新的在线Excel表格。它基本上是一种反馈表,供业务的其他部分根据实际发生的操作同时更新。我知道可以使用 Ms 访问或使用 SQL 服务器直接链接到工作表,但我希望有一个包可以让你像 python 一样将共享点列表视为另一个表

标签: r sharepoint dataframe sharepoint-list


【解决方案1】:

一段时间以来,我一直致力于使用 R 阅读 SharePoint 2010 列表。基本上,我使用 SharePoint Web 服务从列表中返回结果,然后使用 xmlToDataFrame 转换为数据框。

URL <- "http://yoursharepointserver/_vti_bin/ListData.svc/yourlist"    
data = xmlParse(readLines(URL))

## get the individual list items    
items = getNodeSet(data, "//m:properties")

## convert to a data frame
df = xmlToDataFrame(items, stringsAsFactors = FALSE)

由于我使用的是 Web 服务,因此我可以在返回结果之前过滤列表,这对于克服 SharePoint Web 服务的限制非常有帮助。以下链接非常有帮助... http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2010/01/21/introduction-to-querying-lists-with-rest-and-listdata-svc-in-sharepoint-2010.aspx

【讨论】:

    【解决方案2】:

    如果 ListData.svc 正在运行和/或您对 SharePoint 服务器具有管理访问权限,Lee Mendoza 的回答可能会很有效。

    如果这两个都不正确:以下可能有效。至少它在 SharePoint 2010 上对我有用。如果 ListData.svc 不存在时有更好的方法,我很乐意听到。

     library(RCurl)
     library(XML)
     library(data.table)
     URL <- "http://<site>/_vti_bin/owssvr.dll?Cmd=Display&Query=*&XMLDATA=TRUE&List={GUID_OF_LIST}"
     rawData <- getURL(URL, userpwd = "username:password")
     # in real life  prompt for user credentials, don't put in script
     xmlData <- xmlParse (rawData, options=HUGE, useInternalNodes=TRUE)
     dataList <- xmlToList(xmlRoot(xmlData)[["data"]])
     # check the system return, on my SP2010 server the data block is 
     # named rs:data so this works
     dataMatrix <- do.call(rbind,dataList)
     finalDataTable <- data.table(dataMatrix)
    

    【讨论】:

    • 我无法获得这部分getURL(URL, userpwd = "username:password")...无论我输入什么,我都会收到 403 禁止。我试过用几种不同的方式输入我的凭证......有什么建议吗?当你输入&lt;site&gt;时,在xxxx.sharepoint.com之后应该包含多少信息?
    【解决方案3】:

    上述答案仅适用于

    sp_import <- function(ListName) {
    
            urlstring <- "http://yoursharepointserver/_vti_bin/ListData.svc/yourlist" 
            data <- xmlParse(readLines(paste(urlstring, ListName, sep = ""), warn = FALSE))
            items <- getNodeSet(data, "//m:properties")
            df <- xmlToDataFrame(items, stringsAsFactors = FALSE)
            iterate <- nrow(df)
            skip <- 1
    
            while (nrow(df) == 1000 * skip) {
                data <- xmlParse(readLines(paste(urlstring, ListName, "?$top=1000&$skip=", iterate, sep = ""), warn = FALSE))
                items <- getNodeSet(data, "//m:properties")
                df <- rbind(df, xmlToDataFrame(items, stringsAsFactors = FALSE))
                iterate <- nrow(df)
                skip <- skip + 1
            }
            return(df)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多