SalesforceのReportをCSVでPythonから取得する。

下記のモジュールを使用
github.com

Salesforce lightning

isdtp=p1 と言う記載をclassicより足しておかないと動かない。
URLが少し取得が難しかった(理由:複数のURL表記が有ったため)

import requests
import codecs
from simple_salesforce import Salesforce

site_name = 'Siteの名前を記載してください。'
report_id= 'レポートのIDを記載してください'
password = 'パスワードに置き換えてください。'
username = 'ユーザ名を置き換えてください。'
security_token = 'セキュリティ トークンを置き換えてください。'
filename = r'ファイル名を入れてください。'

sf = Salesforce(username=username, password=password, security_token = security_token)

with requests.session() as s:
    d = s.get("https://%s.salesforce.com/%s?isdtp=p1&export=1&enc=UTF-8&xf=csv"%(site_name,report_id), headers=sf.headers, cookies={'sid': sf.session_id})

text = d.text
sf.session.close()

fp = codecs.open(filename,'w+','utf8')
fp.write(text)
fp.close()

Salesforce classic

isdtp=p1 と言う記載をlightningより削除。

import requests
import codecs
from simple_salesforce import Salesforce

site_name = 'Siteの名前を記載してください。'
report_id= 'レポートのIDを記載してください'。
password = 'パスワードに置き換えてください。'
username = 'ユーザ名を置き換えてください。'
security_token = 'セキュリティ トークンを置き換えてください。'
filename = r'ファイル名を入れてください。'

sf = Salesforce(username=username, password=password, security_token = security_token)

with requests.session() as s:
    d = s.get("https://%s.salesforce.com/%s?export=1&enc=UTF-8&xf=csv"%(site_name,report_id), headers=sf.headers, cookies={'sid': sf.session_id})

text = d.text
sf.session.close()

fp = codecs.open(filename,'w+','utf8')
fp.write(text)
fp.close()