Example usage
To use salesforce_tools in a project:
import salesforce_tools
from salesforce_tools.salesforce_tools import SalesforceTools
import os
print(salesforce_tools.__version__)
0.1.0
# Authenticate with your credentials here
user = 'crastello.py@gmail.com'
pw = os.environ.get('SFDC_PASS')
token = os.environ.get('SFDC_TOKEN')
sf = SalesforceTools(username=user,password=pw,security_token=token)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[2], line 6
3 pw = os.environ.get('SFDC_PASS')
4 token = os.environ.get('SFDC_TOKEN')
----> 6 sf = SalesforceTools(username=user,password=pw,security_token=token)
File ~/checkouts/readthedocs.org/user_builds/salesforce-tools/checkouts/latest/src/salesforce_tools/salesforce_tools.py:42, in SalesforceTools.__init__(self, username, password, security_token, domain)
32 def __init__(self, username: str, password: str, security_token: str, domain: str = 'login'):
33 """
34 Initialize the SalesforceTools with authentication parameters.
35
(...) 40 domain: Salesforce domain (default: 'login')
41 """
---> 42 self.sf = Salesforce(username=username, password=password, security_token=security_token, domain=domain)
43 self.opportunities = None
File ~/checkouts/readthedocs.org/user_builds/salesforce-tools/envs/latest/lib/python3.11/site-packages/simple_salesforce/api.py:250, in Salesforce.__init__(self, username, password, security_token, session_id, instance, instance_url, organizationId, version, proxies, session, client_id, domain, consumer_key, consumer_secret, privatekey_file, privatekey, parse_float, object_pairs_hook)
248 self._refresh_session()
249 else:
--> 250 raise TypeError(
251 'You must provide login information or an instance and token'
252 )
254 self.auth_site = f'https://{self.domain}.salesforce.com'
256 self.headers = {
257 'Content-Type': 'application/json',
258 'Authorization': 'Bearer ' + self.session_id,
259 'X-PrettyPrint': '1'
260 }
TypeError: You must provide login information or an instance and token
### Run a SOQL Query and return result as a df
soql = '''SELECT Id, Name, CloseDate, CreatedDate FROM Opportunity LIMIT 5'''
opps = sf.sf_api_query(soql=soql, dateList=['CloseDate','CreatedDate'],tz='America/Chicago')
sf.query_opportunities(dateList=['CreatedDate','CloseDate'],tz='America/Ney York',startDate='2024-01-01',endDate='2025-01-31')
| Id | Name | StageName | Amount | CloseDate | CreatedDate | IsWon | IsClosed | OwnerId | Type | Probability | AccountId | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 006a50000004MBeAAM | Opportunity for Conner5 | Qualification | 32400.0 | 2024-08-28 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039fEAAQ | Existing Business | 10.0 | 001a5000000RKZdAAO |
| 1 | 006a50000004MBfAAM | Opportunity for Chandler133 | Perception Analysis | 754640.0 | 2024-06-06 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039fDAAQ | New Business | 70.0 | 001a5000000RKCqAAO |
| 2 | 006a50000004MBjAAM | Opportunity for McDonald13 | Closed Lost | 240747.0 | 2024-01-10 | 2024-02-10T08:26:48.000+0000 | False | True | 005a500000039fDAAQ | New Business / Add-on | 0.0 | 001a5000000RKYaAAO |
| 3 | 006a50000004MBlAAM | Opportunity for McLaughlin130 | Negotiation/Review | 1249000.0 | 2024-03-18 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039f8AAA | Existing Business | 90.0 | 001a5000000RJhTAAW |
| 4 | 006a50000004MBoAAM | Opportunity for Barnes141 | Qualification | 363400.0 | 2024-06-30 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039fLAAQ | New Business / Add-on | 10.0 | 001a5000000RKXNAA4 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 290 | 006a50000004N1UAAU | Opportunity for Keller1431 | Needs Analysis | 2894390.0 | 2024-12-18 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039f9AAA | New Business | 20.0 | 001a5000000RJj5AAG |
| 291 | 006a50000004N1XAAU | Opportunity for Chandler1439 | Needs Analysis | 1648300.0 | 2024-10-05 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039fGAAQ | Existing Business | 20.0 | 001a5000000RJ5vAAG |
| 292 | 006a50000004N1cAAE | Opportunity for Marsh1806 | Closed Lost | 58840.0 | 2024-01-22 | 2024-02-10T08:26:48.000+0000 | False | True | 005a500000039f3AAA | New Business / Add-on | 0.0 | 001a5000000RJhjAAG |
| 293 | 006a50000004N1iAAE | Opportunity for Chandler1816 | Perception Analysis | 470865.0 | 2024-06-10 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039fAAAQ | New Business | 70.0 | 001a5000000RKYXAA4 |
| 294 | 006a50000004N1lAAE | Opportunity for Moss1820 | Perception Analysis | 1489210.0 | 2024-06-11 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039f6AAA | New Business | 70.0 | 001a5000000RKafAAG |
295 rows × 12 columns
sf.query_opportunities()
| Id | Name | StageName | Amount | CloseDate | CreatedDate | IsWon | IsClosed | OwnerId | Type | Probability | AccountId | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 006a50000004MYqAAM | Opportunity for Hamilton810 | Needs Analysis | 895290.0 | 2025-01-19 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039f8AAA | New Business | 20.0 | 001a5000000RKEXAA4 |
| 1 | 006a50000004MofAAE | Opportunity for Jimenez961 | Needs Analysis | 449700.0 | 2025-01-20 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039f3AAA | New Business | 20.0 | 001a5000000RKZoAAO |
| 2 | 006a50000004N1SAAU | Opportunity for Flowers1427 | Needs Analysis | 1979000.0 | 2025-01-24 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039f9AAA | New Business / Add-on | 20.0 | 001a5000000RKbNAAW |
| 3 | 006a50000004MovAAE | Opportunity for Johnson1707 | Needs Analysis | 3612800.0 | 2025-01-25 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039fDAAQ | New Business / Add-on | 20.0 | 001a5000000RJjUAAW |
| 4 | 006a50000004MCDAA2 | Opportunity for Wise361 | Needs Analysis | 1595250.0 | 2025-01-26 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039f5AAA | New Business | 20.0 | 001a5000000RKXxAAO |
| 5 | 006a50000004MDIAA2 | Opportunity for Phelps205 | Needs Analysis | 53325.0 | 2025-01-27 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039f3AAA | Existing Business | 20.0 | 001a5000000RKbrAAG |
| 6 | 006a50000004MZtAAM | Opportunity for Hughes845 | Needs Analysis | 1405500.0 | 2025-02-06 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039f9AAA | New Business | 20.0 | 001a5000000RKEdAAO |
| 7 | 006a50000004MoGAAU | Opportunity for Barnett1692 | Needs Analysis | 4708010.0 | 2025-02-06 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039f9AAA | New Business | 20.0 | 001a5000000RJ4yAAG |
| 8 | 006a50000004MohAAE | Opportunity for Wade966 | Needs Analysis | 552000.0 | 2025-02-15 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039fEAAQ | New Business | 20.0 | 001a5000000RJjDAAW |
| 9 | 006a50000004ME4AAM | Opportunity for Pope310 | Needs Analysis | 3207480.0 | 2025-02-17 | 2024-02-10T08:26:48.000+0000 | False | False | 005a500000039fLAAQ | Existing Business | 20.0 | 001a5000000RJ3gAAG |