サービス
  webflow ロゴFaceMFA ロゴ

Blog

事例・ブログ
2024-06-13
Salesforce

【Salesforce】Pythonでカスタム項目を一括作成する方法

【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-salesforce

2.ファイルを作成

ディレクトリ構成

以下のようなディレクトリ構成を作成します。

└── Project/
   ├── csv_files/
   │   └── custom_fields.csv
   ├── salesforce_credentials.json
   ├── common_salesforce.py
   └── create_custom_field_by_csv.py

3.ファイルを編集

各ファイルの内容は以下の通りです。

salesforce_credentials.json

Salesforceにログインするユーザーの認証情報を記載します。

{
    "username": "xxxxxx@xxx.xxx",
    "password": "xxxxxxxxxxx",
    "security_token": "xxxxxxxxxxx",
    "domain": "login"
}

サンプルコード

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,2
  • ObjectName: カスタム項目を作成するオブジェクトの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

作成できるデータ型を増やす手順

  1. custom_fields.csvに作成したいデータ型に必要な項目を列を追加します。
  2. create_custom_field_by_csv.py# データ型に応じた追加パラメータを設定の部分に処理を追加します。

項目レベルセキュリティについて

上記の手順でカスタム項目を一括作成することができますが、作成された項目には項目レベルセキュリティが設定されていません。
そのため、システム管理者ですら作成した項目の参照・編集権限を持っていません。

項目レベルセキュリティの設定は、Salesforceの画面から項目ごとに行うことも可能ですが、カスタム項目を一括作成するのと同様に一括で設定することもできます。
その具体的な手順は、「[Salesforce]複数プロファイルの項目レベルセキュリティ一括更新」でご紹介しています。

Contact

お問い合わせ
Salesforce、HubSpot、システム開発など
まずは何でもお気軽にご相談ください。