AppleScript connector for Salesforce.com
The AppleScript connector allows you to make calls to the Salesforce.com Web Services API from applescript, enabling you to highly customize and integrate your desktop OSX environment with Salesforce.com.
Getting going
Download the application (Requires OSX 10.5 or later), and drop it in your applications folder. The name of the application is called SalesforceScripting, so every script would start withtell application "SalesforceScripting"
Starting a new User Session.
set mySession to login username "someusername@sample.com" password "mypassword(and possibly security token)"
Create a new Account in Salesforce (note that like the web api, create can take multiple objects, and returns a list of SaveResult objects)
set acc to make SObject
set type of acc to "Account"
acc setField named "Name" to "My New Account"
set res to mySession create sobjects acc
Id of first item of res
Check for errors when creating/updating records
set cont to make SObject
set type of cont to "Contact"
cont setField named "LastName" to "blowy"
set resList to session create sobjects cont
set res to first item of resList
if success of res then
display dialog "created contact, Id is " & Id of res
else
display dialog "couldn't create contact " & StatusCode of res & ":" & message of res
end if
Querying Salesforce.com
set res to query mySession soql "select id, name, annualrevenue, createdDate, createdBy.Name from account order by createdDate desc"
set L to (get every SObject of res)
repeat with row in L
Id of row -- the Salesforce.com record Id
type of row -- the SObject type, e.g. Account
row value of "Name" -- get the Name field
row value of "CreatedBy.Name" -- shortcut to get the Name field of the CreatedBy related user object
row dateValue of "CreatedDate" -- the date/time value of the CreatedDate field
row numberValue of "AnnualRevenue" -- the number from the annual revenue field
end repeat
See the users properties from UserInfo
tell application "SalesforceScripting"
set session to login with saved credentials
set u to users info of session
serverUrl of session
sessionId of session
username of u
userId of u
profileId of u
end tell
Show the user an interactive login dialog
tell application "SalesforceScripting"
set session to show login window
-- do something with session
end tell
Examine the results of a describeGlobal call
tell application "SalesforceScripting"
set session to login with saved credentials
name of every SObjectDescribe in session whose custom is false
end tell
Look at field Describes
tell application "SalesforceScripting"
set session to login with saved credentials
set d to first SObjectDescribe in session whose name is equal to "Account"
set f to first FieldDescribe in d whose name is equal to "OwnerId"
label of f
end tell
API Call log windowStill things to do, including
- upsert
- Diagnostics window
Release History
SalesforceScripting is open source, see the Github project.v0.6 July 16, 2010M
- Fixed issue related to the success flag on the Save Result object.
v0.5 June 4, 2010
- explicit describeGlobal command removed, always done automatically.
- fields collection added to SObjectDescribe, this automatically calls describeSObject as needed.
- a new fields property added to SObject that returns the names of the fields that have values.
- a new optional flag to setDateValue called dateOnly can be used to indicate that the field being set is a date only field.
- A new API Log diagnostic window has been added, see a summary of API calls made to Salesforce.com by the application.
v0.4 June 3, 2010
- Updated to a new version of zkSforce (soon to be published) that is both OSX & iPhone/iPad compatible.
- Added describeGlobal (either call describeGlobal directly, or example the DescribeSObjects collection of the session, and it'll get called automatically for you).
- Added queryMore, you can pass either a string queryLocator, or the previous QueryResult object as the locator parameter.
v0.3 June 2, 2010
- Fixed problems with auto-updater not working. (you'll need to manually update to this version)
v0.2 June 2, 2010
- Added deleteRecords call to session (make a delete api call)
- Added a usersInfo property to session that returns a UserInfo that contains the properties from the userInfo structure returned by login (username, name, email, currencyCode, userId etc).
- Added better error handling, SOAP faults are now passed through into AppleScript errors.
- Added new login commands, "show login window" to show a username/password/server dialog to the user, and "login with saved credentials" to login using the last successfully used credentials (assuming you opted to store the password in the keychain). Any authentication error will result in showing the regular login dialog to the user.
v0.1 June 1, 2010
- Initial release, has support for login, query, create & update.