Blog
【Salesforce】Pythonでカスタム項目を一括作成する方法
この記事でわかること
・カスタム項目を一括で作成する方法
・サンプルコードの公開
・項目レベルセキュリティについて


Salesforceのカスタム項目を一括作成
Salesforceを利用する企業にとって、データ管理とカスタマイズは不可欠な要素です。特に、業務に特化したカスタム項目を作成することで、データの管理効率や業務プロセスの最適化が可能となります。しかし、手動でカスタム項目を作成するのは時間と手間がかかります。
Pythonのライブラリ「simple-salesforce」を活用しカスタム項目を一括作成することで、時間と手間を削減することができます。今回はPythonスクリプト(サンプルコード有り)を使って効率的にカスタム項目を作成する手順を詳しく解説します。
作成する項目のデータ型について
ここで紹介するコードは、テキスト型と数値型の項目作成に対応しています。
他のデータ型も作成できるようにコードを追加することが可能です。
対象読者
- Salesforce開発者
- Salesforce管理者
- Pythonプログラマー
前提条件
- 基本的なSalesforceの知識
- Pythonの基本的なプログラミングスキル
動作環境
- Python 3.12.2
- simple-salesforce 1.12.5
Salesforceでカスタム項目を一括作成する方法(サンプルコード有り)
1.simple-salesforceのインストール
まず、simple-salesforceをインストールします。
pip install simple-salesforce2.ファイルを作成
ディレクトリ構成
以下のようなディレクトリ構成を作成します。
└── Project/
├── csv_files/
│ └── custom_fields.csv
├── salesforce_credentials.json
├── common_salesforce.py
└── create_custom_field_by_csv.py3.ファイルを編集
各ファイルの内容は以下の通りです。
salesforce_credentials.json
Salesforceにログインするユーザーの認証情報を記載します。
{
"username": "xxxxxx@xxx.xxx",
"password": "xxxxxxxxxxx",
"security_token": "xxxxxxxxxxx",
"domain": "login"
}username: ユーザー名password: パスワードsecurity_token: セキュリティトークン(取得方法はSalesforceヘルプ「セキュリティトークンをリセットする」)domain: 本番かSandbox- 本番の場合…
login - Sandboxの場合…test
- 本番の場合…
サンプルコード
common_salesforce.py
Salesforceにログインするスクリプトです。 create_custom_field_by_csv.pyから呼び出されます。
import json
from simple_salesforce import Salesforce
def login_to_salesforce(credentials_file_path):
# 資格情報ファイルを読み込み
with open(credentials_file_path, mode='r', encoding='utf-8') as credentials_file:
credentials = json.load(credentials_file)
# Salesforceにログイン
sf = Salesforce(
username=credentials['username'],
password=credentials['password'],
security_token=credentials['security_token'],
domain=credentials['domain']
)
print('Salesforceへのログインに成功しました。')
return sf.mdapi
create_custom_field_by_csv.py
CSVファイルからカスタム項目を作成するスクリプトです。
import csv
from common_salesforce import login_to_salesforce
def create_custom_fields_from_csv(csv_file_path, metadata_client):
custom_fields = []
with open(csv_file_path, mode='r', encoding='utf-8') as csv_file:
reader = csv.DictReader(csv_file)
for row in reader:
# カスタム項目のパラメータを定義
field_args = {
'fullName': f"{row['ObjectName']}.{row['FieldName']}__c",
'label': row['Label'],
'type': metadata_client.FieldType(row['Type'])
}
# データ型に応じた追加パラメータを設定
if row['Type'].lower() == 'number':
field_args['precision'] = int(row['Precision'])
field_args['scale'] = int(row['Scale'])
elif row['Type'].lower() == 'text':
field_args['length'] = int(row['Length'])
custom_field = metadata_client.CustomField(**field_args)
custom_fields.append(custom_field)
return custom_fields
def main():
credentials_file_path = 'salesforce_credentials.json'
csv_file_path = 'csv_files/custom_fields.csv'
metadata_client = login_to_salesforce(credentials_file_path)
custom_fields = create_custom_fields_from_csv(csv_file_path, metadata_client)
# カスタム項目を作成
if custom_fields:
metadata_client.CustomField.create(custom_fields)
print('カスタム項目の作成に成功しました。')
if __name__ == '__main__':
main()
custom_fields.csv
作成するカスタム項目の情報を記載します。
ObjectName,FieldName,Label,Type,Length,Precision,Scale
ExampleObject,ExampleField1,Example Label1,Text,255
ExampleObject,ExampleField2,Example Label2,Number,,5,2ObjectName: カスタム項目を作成するオブジェクトのAPI参照名- カスタムオブジェクトの場合、
__cまで含めます。
- カスタムオブジェクトの場合、
FieldName: API参照名Label: 表示ラベルType: データ型- テキスト型の場合…
Text - 数値型の場合…
Number - それ以外を追加したい場合…
create_custom_field_by_csv.pyのコードを追加する必要があります。
- テキスト型の場合…
Length: 文字数 (テキスト型の場合、必須)Precision: 文字数 (数値型の場合、必須)Scale: 小数点の位置 (数値型の場合、必須)
4.Pythonスクリプトの実行
最後に、以下のコマンドを実行してPythonスクリプトを実行します。
cd [作成したProjectフォルダへのパス]
python create_custom_field_by_csv.py
作成できるデータ型を増やす手順
custom_fields.csvに作成したいデータ型に必要な項目を列を追加します。- 作成できるデータ型の種類についてはSalesforce Developersメタデータ API 開発者ガイド「メタデータのデータ型」の
FieldTypeに記載されております。 - それぞれのデータ型において必要な項目はSalesforce Developersメタデータ API 開発者ガイド「CustomField」に記載されております。
- 作成できるデータ型の種類についてはSalesforce Developersメタデータ API 開発者ガイド「メタデータのデータ型」の
create_custom_field_by_csv.pyの# データ型に応じた追加パラメータを設定の部分に処理を追加します。
項目レベルセキュリティについて
上記の手順でカスタム項目を一括作成することができますが、作成された項目には項目レベルセキュリティが設定されていません。
そのため、システム管理者ですら作成した項目の参照・編集権限を持っていません。
項目レベルセキュリティの設定は、Salesforceの画面から項目ごとに行うことも可能ですが、カスタム項目を一括作成するのと同様に一括で設定することもできます。
その具体的な手順は、「[Salesforce]複数プロファイルの項目レベルセキュリティ一括更新」でご紹介しています。
ハレフルのSalesforceサービス
「自社にあったMAツールがわからない」「MAツールを導入することは決まっているものの、どの企業に依頼すればいいかわからない」「もっとAccount Engagementを活用してみたい」「最適な運用ができているか判断してもらいたい」という場合には、お問い合わせからご連絡ください。資料請求はこちらから↓↓


また、株式会社ハレフルではAccount Engagementの初期設定支援や運用支援サービスを提供しています。Account Engagement虎の巻、ダウンロードは以下よりお願い致します。

Contact
まずは何でもお気軽にご相談ください。




