Blog
【Salesforce】複数プロファイルの項目レベルセキュリティ一括更新
この記事でわかること
・Pythonで複数プロファイルの項目レベルセキュリティを一括更新
・サンプルコード
・Pythonで項目レベルセキュリティを効率的に管理する方法


Pythonで複数プロファイルの項目レベルセキュリティを一括更新する方法
Salesforceのプロファイル管理は、データセキュリティとユーザーアクセス制御の基盤となる重要な要素です。しかし、複数のプロファイルに対して項目レベルセキュリティを手動で設定するのは手間がかかります。
そこで、今回は、Pythonのライブラリ「simple-salesforce」を活用し、複数のプロファイルの項目レベルセキュリティを一括で更新する方法を解説します。
関連記事:【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-salesforce
2. ファイルを作成
ディレクトリ構成
以下のようなディレクトリ構成を作成します。
.
└── Project/
├── csv_files/
│ └── profiles.csv
├── salesforce_credentials.json
├── common_salesforce.py
└── update_profile_by_csv.py3. ファイルを編集
各ファイルの内容は以下の通りです。
salesforce_credentials.json
Salesforce にログインするユーザーの認証情報を記載します。
{
"username": "xxxxxx@xxx.xxx",
"password": "xxxxxxxxxxx",
"security_token": "xxxxxxxxxxx",
"domain": "login"
}- username: ユーザー名
- password: パスワード
- security_token: セキュリティトークン
- domain: 本番か Sandbox
- 本番の場合、login
- Sandbox の場合、test
common_salesforce.py
Salesforce にログインするスクリプトです。 update_profile_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
update_profile_by_csv.py
CSV ファイルから項目レベルセキュリティを更新するスクリプトです。
import csv
from common_salesforce import login_to_salesforce
def update_profiles_from_csv(csv_file_path, metadata_client):
field_level_securities = {}
# CSVファイルを読み込み
with open(csv_file_path, mode='r', encoding='utf-8') as csv_file:
csv_reader = csv.DictReader(csv_file)
for row in csv_reader:
# プロファイル項目レベルセキュリティのパラメータを定義
field_args = {
'field': f"{row['ObjectName']}.{row['FieldName']}",
}
# 項目レベルセキュリティに応じたパラメータを設定
if row['FieldLevelSecurity'].lower() == 'editable':
field_args['editable'] = True
field_args['readable'] = True
elif row['FieldLevelSecurity'].lower() == 'readable':
field_args['editable'] = False
field_args['readable'] = True
else:
field_args['readable'] = False
field_args['editable'] = False
field_level_security = metadata_client.ProfileFieldLevelSecurity(**field_args)
if row['Profile'] not in field_level_securities:
field_level_securities[row['Profile']] = []
field_level_securities[row['Profile']].append(field_level_security)
profiles = []
for key in field_level_securities.keys():
profiles.append(metadata_client.Profile(
fullName=key,
fieldPermissions=field_level_securities[key]
))
return profiles
def main():
credentials_file_path = 'salesforce_credentials.json'
csv_file_path = 'csv_files/profiles.csv'
metadata_client = login_to_salesforce(credentials_file_path)
profiles = update_profiles_from_csv(csv_file_path, metadata_client)
# プロファイルを更新
if profiles:
metadata_client.Profile.update(profiles)
print('項目レベルセキュリティの更新が完了しました。')
if __name__ == '__main__':
main()
profiles.csv
ObjectName,FieldName,Profile,FieldLevelSecurity
CustomObject__c,ExampleField1__c,Admin,editable
CustomObject__c,ExampleField2__c,Admin,readable- ObjectName: オブジェクトの API 参照名
- カスタムオブジェクトの場合、__cまで含めます。
- FieldName: 項目の API 参照名
- カスタム項目の場合、__cまで含めます。
- Profile: プロファイルの API 参照名
- 「プロファイルの API 参照名」はプロファイル一覧などに表示される「プロファイル名」とは異なる場合があります。
- 確認方法については「プロファイルの API 参照名の確認方法」をご参照ください。
- FieldLevelSecurity: 項目レベルセキュリティ
- 編集可能の場合、editable
- 参照可能な場合、readable
- どちらも不可の場合、空欄
プロファイルの API 参照名の確認方法
1. 設定 > 送信変更セット で新規変更セットを作成します(名前は任意)

2. 「プロファイルの追加」をクリックします

3. 「API 参照名」列で確認することができます

4. Python スクリプトの実行
最後に、以下のコマンドを実行して Python スクリプトを実行します。
cd [作成したProjectフォルダへのパス]
python update_profile_by_csv.py
Pythonで項目レベルセキュリティを効率的に管理
今回紹介した方法を使用することで、Salesforceの複数プロファイルに対する項目レベルセキュリティの一括更新が簡単に行えるようになります。手動で行っていた煩雑な作業をPythonスクリプトに置き換えることで、時間と労力の大幅な節約が可能です。Salesforceのセキュリティ管理がより効率的かつ正確になるため、システム全体の安全性と信頼性も向上します。ぜひ、お試しください。
ハレフルのSalesforceサービス
「自社にあったMAツールがわからない」「MAツールを導入することは決まっているものの、どの企業に依頼すればいいかわからない」「もっとAccount Engagementを活用してみたい」「最適な運用ができているか判断してもらいたい」という場合には、お問い合わせからご連絡ください。


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

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




