RForcecom 访问未知字段名称
RForcecom accessing unknown field names
我的最终目标是从 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)
这很好用并且 return 是 data.frame
正如 RForcecom 所说的那样。现在我还想提取字段 "Contact Owner Alias"(该字段在 SalesForce 的 Web 界面上具有此名称)。我尝试了以下方法:
fields <- c("Id", "Name", "Phone", "Contact Owner Alias")
rforcecom.retrieve(session, objectName, fields)
这给出了一个错误:
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
问题
有没有办法在 R 中检索所有文件名?
或者有没有办法在不知道名称的情况下 return 来自所有字段的数据。
警告
我知道问题的一部分是我对 SOQL 的不熟悉,但它认为我会四处打听一下是否已经在 R 中解决了这个问题。如果答案是 "go learn SOQL" 那没关系,我只是想我先问一下。
感谢您的帮助!
对于 retrieve()
和 SOQL query()
函数调用,您需要使用相关字段的 Salesforce API 名称。
对于像 "Contact Owner Alias" 这样的自定义字段,您很可能会寻找像 "ContactOwnerAlias__c" 这样的 API 名称。请注意 __c 后缀,表示它是自定义字段而不是标准字段。
您可以通过检查 Salesforce UI 中的字段来获取 API 名称,或者如您所见,使用 workbench 等外部工具在该字段中找到它元数据。
我不知道R,但我发现RForcecom presentation at the UseR! 2014中有一个rforcecom.getObjectDescription()方法。这可能 return 相关对象的字段元数据,然后您可以使用它来获取 API 字段名称。
抱歉耽搁了,谢谢 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")
library(gsubfn) # this is used for fn$indentity
account.nm <- rforcecom.getObjectDescription(session, "Account")
nm <- toString( sprintf("%s", account.nm$name))
account.query <- fn$identity( "SELECT $nm FROM Account")
Account <- rforcecom.query(session, account.query)
我的最终目标是从 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)
这很好用并且 return 是 data.frame
正如 RForcecom 所说的那样。现在我还想提取字段 "Contact Owner Alias"(该字段在 SalesForce 的 Web 界面上具有此名称)。我尝试了以下方法:
fields <- c("Id", "Name", "Phone", "Contact Owner Alias")
rforcecom.retrieve(session, objectName, fields)
这给出了一个错误:
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
问题
有没有办法在 R 中检索所有文件名? 或者有没有办法在不知道名称的情况下 return 来自所有字段的数据。
警告
我知道问题的一部分是我对 SOQL 的不熟悉,但它认为我会四处打听一下是否已经在 R 中解决了这个问题。如果答案是 "go learn SOQL" 那没关系,我只是想我先问一下。
感谢您的帮助!
对于 retrieve()
和 SOQL query()
函数调用,您需要使用相关字段的 Salesforce API 名称。
对于像 "Contact Owner Alias" 这样的自定义字段,您很可能会寻找像 "ContactOwnerAlias__c" 这样的 API 名称。请注意 __c 后缀,表示它是自定义字段而不是标准字段。
您可以通过检查 Salesforce UI 中的字段来获取 API 名称,或者如您所见,使用 workbench 等外部工具在该字段中找到它元数据。
我不知道R,但我发现RForcecom presentation at the UseR! 2014中有一个rforcecom.getObjectDescription()方法。这可能 return 相关对象的字段元数据,然后您可以使用它来获取 API 字段名称。
抱歉耽搁了,谢谢 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")
library(gsubfn) # this is used for fn$indentity
account.nm <- rforcecom.getObjectDescription(session, "Account")
nm <- toString( sprintf("%s", account.nm$name))
account.query <- fn$identity( "SELECT $nm FROM Account")
Account <- rforcecom.query(session, account.query)