背景
生成 AI を活用して Salesforce をごにょごにょしようとした時に、オブジェクトの項目一覧・各属性情報をうまく使う必要が出てきました。抽出のやり方はいくつかあるのですが、出力結果をテキスト整形したかったこともあり、この目的のための使い用としてはあまり見かけない Python & simple-salesforce を使った例の記録です。
環境
- Python 3.10.12 (Google Collaboratory)
- simple-salesforce==1.12.4
試し方
以下は Google Colaboratory での操作手順を想定していますが、パソコンで直接実行でももちろん動きます。
1.simple-salesforce をインストール
まずは必要なライブラリをインストールしましょう。次をコードブロックに転記し実行します。
!pip install simple-salesforce
2.環境変数にユーザー名とパスワードを設定
続いて環境変数を設定します。次のコードを該当箇所を書き換えて、コードブロックに転記し実行します。
%env USERNAME=使用する Salesforce のユーザー名に書き換え
%env PASSWORD=↑のパスワードに書き換え
3.コードを実行
次をコードブロックに転記し実行します。
import os
import pprint
from simple_salesforce import Salesforce
# 環境変数から当該組織へアクセスできるユーザー名/パスワードを読み込み
USERNAME = os.environ['USERNAME']
PASSWORD = os.environ['PASSWORD']
# 接続実施
# Sandbox に接続する場合は引数に domain='test' を加える
sf = Salesforce(username=USERNAME, password=PASSWORD, security_token='')
# 特定オブジェクトの項目情報を取得
# 次は取引先(Account)の項目。Account を Contact や Opportunity に変えることで他のオブエクトの項目情報を取得できる
fields = sf.Account.describe()['fields']
# 項目名と型を出力
for field in fields:
print(f'{field["name"]} {field["type"]}')
- describe() で返されるオブジェクトや取り出した field にどんな情報が含まれているかは、次を参考にすると良いです。
実行結果例
出力の仕方を変えることで、例えば次のような一覧形式にすることもできます。
Id id(18),
IsDeleted boolean,
MasterRecordId reference(18) to Account,
Name string(255),
LastName string(80),
FirstName string(40),
Salutation picklist(40),
Type picklist(255),
RecordTypeId reference(18) to RecordType,
ParentId reference(18) to Account,
BillingStreet textarea(255),
BillingCity string(40),
BillingState string(80),
BillingPostalCode string(20),
BillingCountry string(80),
〜以下略〜
あれに似てますよね。Salesforce のオブジェクトの項目構成をこのように表記する必要は基本的にはない
のですが、これを使った検証については別記事で解説します。
以上、「Python & simple-salesforce を使って Salesforce のオブジェクト項目一覧・各属性情報を抽出する」でした。