Salesforce触っていると、アドホックにデータを操作したいときが結構あるんですが、Pythonってそういうのないのかなーと思って、ちょっくら調べてみましたので備忘として残しておきます。
pyforce
- github: https://github.com/alanjcastonguay/pyforce
- PyPI: https://pypi.python.org/pypi/pyforce
- Python Version: 2系
- SOAP API利用
$ pip install pyforce
ログイン
import pyforce
svc = pyforce.PythonClient()
svc.login('{username}', '{password}')
Client呼び出しがpyforce.PythonClient()になっているところが、githubに書かれているサンプルとは異なるので注意。
レコード取得
svc.query('SELECT Id, FirstName, LastName FROM Contact LIMIT 10')
レコード作成
svc.create([
{
'type': 'Contact',
'LastName': 'Created From Python.',
'Account': {
'type': 'Account',
'ExKey__c': 'ABCD'
}
}
])
describeGlobal
dg = svc.describeGlobal()
print(dg['types'])
describeSObjects
desc = svc.describeSObjects('Contact')
print(desc[0].fields)
メール送信
svc.sendEmail([{
'subject': 'HOGE',
'plainTextBody': 'Test From Python',
'toAddresses': ['hoge@example.com']
}])
simple-salesforce
- github: https://github.com/heroku/simple-salesforce
- PyPI: https://pypi.python.org/pypi/simple-salesforce
- Python Version:2.6, 2.7, 3.3, 3.4
- ログインだけSOAPで他はREST
$ pip install simple-salesforce
ログイン
from simple_salesforce import Salesforce
sf = Salesforce(username='{username}', password='{password}', security_token='')
レコード作成
sf.Contact.create({
'LastName': 'simple_salesforce',
'Account': {
'ExKey__c': 'ABCD'
}
})
レコード取得(IDベース)
sf.Contact.get('003***************')
レコード取得(外部IDベース)
sf.Contact.get_by_custom_id('ExKey__c', 'ABC123')
レコード取得(クエリ)
sf.query('SELECT id, LastName, FirstName FROM Contact LIMIT 10')
オブジェクトのメタデータ取得
sf.Contact.metadata()
オブジェクトのdescribe
sf.Contact.describe()
DescribeGlobal
sf.describe()["sobjects"]