Simple Salesforceを使ってSalesforceのリード情報を取得する

こんにちは、香田です。

Salesforceからデータ取得方法の一つとして提供されている、Lightning Platform REST APIを利用するとHTTPでデータが取得できます。

ここではLightning Platform REST APIをサンプルコードで実行し、SalesforceのデータをCSVファイルで取得する方法を紹介していきます。

認証設定

はじめに認証設定を準備します。

ユーザー名、パスワード、セキュリティトークンを使用して認証する為、セキュリティトークンを確認します。

[個人設定]をクリックします。

3-1

[クイック検索]に[セキュリティトークン]と入力し、[私のセキュリティトークンのリセット]をクリックします。

3-2

[セキュリティトークンのリセット]をクリックすると、アカウントのメールアドレスにセキュリティトークンが送信されるので、コピーします。

3-3

Python パッケージ インストール

ここでは、Lightning Platform REST APIへアクセスするために、Pythonパッケージとして提供されているSimple Salesforceを利用したサンプルコードの実行例を紹介していきます。

サンプルコードで取得するデータはリード情報を対象としております。適宜修正することでカスタマイズ可能です。

GCPで無料で提供されているブラウザでコマンドラインやエディタを利用可能なCloud Shellを利用していきます。

Cloud Shellのコードエディタを起動します。

3-4

ターミナルでPython パッケージをインストールします。

mkdir salesforce
cd salesforce
python3 -m venv venv
source venv/bin/activate
pip install simple-salesforce

サンプルコードのセットアップ

salesforceフォルダ配下で[New FIle]よりmain.pyという名前で新規ファイルを作成します。作成したファイルに下記のサンプルコードをコピーし貼り付けます。

3-5

サンプルコード

from simple_salesforce import Salesforce
from datetime import datetime
import csv
import os
import json

SALESFORCE_USERNAME = os.environ['SALESFORCE_USERNAME']
PASSWORD = os.environ['PASSWORD']
SECURITY_TOKEN = os.environ['SECURITY_TOKEN']


def main():
    # 認証設定
    sf = Salesforce(username=SALESFORCE_USERNAME,
                    password=PASSWORD,
                    security_token=SECURITY_TOKEN)

    # Lead 取得対象のカラム設定
    columns = [
        'FirstName', 'LastName', 'Email', 'LeadSource', 'Status', 'CreatedDate'
    ]
    sosl = 'SELECT {0[0]}, {0[1]}, {0[2]}, {0[3]}, {0[4]}, {0[5]} FROM Lead'.format(
        columns)

    # SOSLでデータ取得
    data = sf.query(sosl)

    # CSVファイルが存在してる場合削除
    output_csv = 'output.csv'
    if os.path.exists(output_csv):
        os.remove(output_csv)

    # CSVファイルに書き込み
    for k, v in data.items():
        if type(v) is list:
            with open(output_csv, 'a') as f:
                writer = csv.DictWriter(f, fieldnames=columns)
                writer.writeheader()
                for d in v:
                    data = json.loads(json.dumps(d))
                    del data['attributes']
                    d = datetime.strptime(
                        data['CreatedDate'], '%Y-%m-%dT%H:%M:%S.%f%z')
                    data['CreatedDate'] = d.strftime('%Y-%m-%d %H:%M:%S')
                    writer.writerow(data)


if __name__ == '__main__':
    main()

サンプルコードの実行

環境変数としてユーザー名、パスワード、セキュリティトークンを設定します。

export SALESFORCE_USERNAME=<ユーザー名>
export PASSWORD=<パスワード>
export SECURITY_TOKEN=<セキュリティトークン>

ターミナルでサンプルコードを実行します。

python3 main.py

実行結果の確認

実行すると下記のようなCSVファイルが確認できるはずです。

3-6

さいごに

Simple Salesforceを使ったデータ取得いかがでしたでしょうか?

Salesforceで取得できるオブジェクトは多数あるので、今回使用したサンプルコードがお役に立てれば幸いです。

最後までご覧頂きありがとうございます!

SNSでもご購読できます。