RForcecom访问未知的字段名称

rom*_*man 6 r salesforce soql

我的最终目标是从Salesforce帐户中提取数据,以便在R中使用.我发现了RForcecom软件包(https://hiratake55.wordpress.com/2013/03/28/rforcecom/),这看起来非常有用,谢谢@ hiratake55写它!不幸的是我遇到了一个小问题.

我可以登录我的帐户,然后访问内部和存储对象,data.frame就像介绍说明一样.

问题是我想访问SOQL对象中的某些字段,我不知道这些字段的名称.

这是我到目前为止:

    library(RForcecom)

    username <- "" # my email address
    password <- "" # my website password + security token
    instanceURL <- "https://eu5.salesforce.com/"
    apiVersion <- "34.0"
    session <- rforcecom.login(username, password, instanceURL, apiVersion)

    # R Query
    objectName <- "Contact"
    fields <- c("Id", "Name", "Phone")
    rforcecom.retrieve(session, objectName, fields)
Run Code Online (Sandbox Code Playgroud)

这工作正常,并返回data.frame正如RForcecom在锡上所说的那样.现在我还想提取例如字段"Contact Owner Alias"(该字段在SalesForce的Web界面上具有此名称).我尝试了以下方法:

    fields <- c("Id", "Name", "Phone", "Contact Owner Alias")
    rforcecom.retrieve(session, objectName, fields)
Run Code Online (Sandbox Code Playgroud)

这给出了一个错误:

    Error in rforcecom.query(session, soqlQuery) : 
      MALFORMED_QUERY: Id, Name, Phone, Contact Owner Alias FROM Contact
                                  ^
    ERROR at Row:1:Column:38
    unexpected token: Alias
Run Code Online (Sandbox Code Playgroud)

有没有办法检索R中的所有文件名?或者有没有办法从所有字段返回数据而不知道他们的名字.

警告

我知道问题的一部分是我对SOQL的不熟悉,但它认为我会问周围是否在R内部已经解决了.如果答案是"去学习SOQL"那没关系,我只是想我先问.

谢谢你的帮助!

rom*_*man 6

抱歉延迟了,谢谢Daniel B.要更新我解决了你的建议如下

# grab SForce Data
library(RForcecom)

# session login etc 
username <- "Nope"
password <- "Nope"
instanceURL <- "https://eu5.salesforce.com/"
apiVersion <- "34.0"
session <- rforcecom.login(username, password, instanceURL, apiVersion)

# query
objects <- rforcecom.getObjectList(session)

# pull all fields of an object
getAllFields <- function(objectName) {
  description <- rforcecom.getObjectDescription(session, objectName)
  fields <- as.character(description$name)
  rforcecom.retrieve(session, objectName, fields)
}

# grab the data 
accounts <- getAllFields("Account")
Run Code Online (Sandbox Code Playgroud)


Dan*_*ger 5

使用retrieve()和和SOQL query()函数调用,您将需要使用相关字段的Salesforce API名称.

使用"联系所有者别名"等自定义字段,您很可能会寻找像"ContactOwnerAlias__c"这样的API名称.请注意__c后缀,表示它是自定义字段而不是标准字段.

您可以通过检查Salesforce UI中的字段来获取API名称,或者,如您所见,使用工作台等外部工具在字段元数据中查找它.

我不知道R,但我发现在UseR的RForcecom演示中有一个rforcecom.getObjectDescription()方法 !2014年.这可能会返回相关对象的字段元数据,然后您可以使用它来获取API字段名称.