2016-01-03

PythonのSalesforceライブラリ調べてみた

Salesforce触っていると、アドホックにデータを操作したいときが結構あるんですが、Pythonってそういうのないのかなーと思って、ちょっくら調べてみましたので備忘として残しておきます。

pyforce

インストールはpipで
$ 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

インストール
$ 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"]
このエントリーをはてなブックマークに追加