Beatbox / Python - 在Salesforce中更新多个记录时遇到问题

时间:2014-03-06 04:28:35

标签: python-2.7 salesforce beatbox

我的beatbox与SFDC开发者帐户配合得很好。我正在推动Salesforce创建自定义对象,但它一次更新一个。有没有办法一次推送200个更改来限制我正在进行的api调用量?

我运行的脚本下载了一批潜在客户,然后通过new_Alert()处理它们,然后逐个上传它们,这样我很快就达到了api限制。

下面是我正在运行的两个脚本,我已经删除了大部分“工作”,使其更容易阅读。

def new_Alert(id1,login,pw):
    svc = beatbox.Client()
    svc.login(login, pw)  
        object_dict = {
        'type': 'new_Alert',
        'Lead__c':  str(id1) }
        results = svc.create(object_dict)
        print results


def pushAlerts(login,pw):
    sf = beatbox._tPartnerNS
    svc = beatbox.Client() 
    svc.login(login, pw) 
    qr = svc.query("select Id, OwnerId from Lead")

    for rec in qr[sf.records:]:
        type = rec[0]
        id1 = rec[1]
        owner = rec[2]
        new_Alert(type,id1,login)
    while (str(qr[sf.done]) == 'false'):
        qr = svc.queryMore(str(qr[sf.queryLocator]))
        for rec in qr[sf.records:]:
            type = rec[0]
            id1 = rec[1]
            new_Alert(type,id1,login)

1 个答案:

答案 0 :(得分:1)

create函数可以列出最多200条记录(字典),只需累积它们并在收集200条后发送批处理。

这是一次创建2个帐户记录并检查结果的示例。

def create(self):
    a = { 'type': 'Account',
        'Name': 'New Account',
        'Website': 'http://www.pocketsoap.com/' }
    b = { 'type' : 'Account',
        'Name' : 'Another account',
        'Website' : 'https://github.com/superfell/Beatbox' }

    sr = svc.create([a,b])

    self.printresult(sr[0])
    self.printresult(sr[1])

def printresult(self, sr):
    if str(sr[sf.success]) == 'true':
        print "id " + str(sr[sf.id])
    else:
        print "error " + str(sr[sf.errors][sf.statusCode]) + ":" + str(sr[sf.errors][sf.message])