It would be nice is Salesforce supported something like:
- UPDATE Attachment SET parentId='new' WHERE parentId='old'
Fortunately, the jython SQLForce module made this problem easy to solve. Here is the complete script:
import SQLForce
def getAccountId( session, name ):
records = session.selectRecords( "SELECT id FROM account where name='" + name + "'")
if 1 == len(records):
return records[0].id
return None
if __name__ == '__main__':
session = SQLForce.Session("sandbox")
srcAccountId = getAccountId( session, "Biota Scientific Management Pty Ltd")
destAccountId = getAccountId( session, "Biota Structural Biology Laboratory")
print "Src Account", srcAccountId
print "Dest Account", destAccountId
for att in session.selectRecords( "SELECT id, body, contentType, isPrivate, name FROM attachment WHERE parentId='" + srcAccountId + "'"):
session.insert( "attachment", ["body", "contentType", "isPrivate", "name", "parentId"],
[[att.body, att.contentType, att.isPrivate, att.name, destAccountId]])
session.delete( "attachment", [att.id] )
Yeah, I should have cached both the updates and deletes into a python array and made two calls to Salesforce instead of two per attachment. What can I say -- I was lazy.
No comments:
Post a Comment