Obtendo grande quantidades de registros do Sales Force via API

image_pdfimage_print

Para obter largas quantidades de registro do Sales Force via API, que em geral tem o limite de 500 registros por requisição, assim como limite máximo de offset em 2000, é necessário utilizar outros recursos disponibilizados na própria API, que não diretamente o método query, utilizado para fazer requisições.

Para isto é necessário combinar o método query com o método queryMore e o cursor queryLocator, que representa o cursor no servidor do Sales Force que mantém o rastro para a posição corrente da localização atual do conjunto de registros obtidos.

Abaixo uma utilização hipotética utilizando php para demonstrar como obter todos os registros do object Account do Sales Force

$query = "
      SELECT
              Account.Id
              Account.Name
          FROM Account
          ORDER BY Account.Name
    ";

    $response = $sf->query($query);

    while(true){

        if(!
            (
                $response
                &&
                property_exists($response,'records')
            )
        ){
            break;
        }

        $Record = $response->records;
        if( count($Record) <=0 ){
            break;
        }
        
        foreach($Record as $o){           
            $name = (property_exists($o,"Name")) ? $o->Name : null;
            print $name;
        }
        if(!$response->queryLocator){
            break;
        }
        $response = $sf->queryMore($response->queryLocator);
    }
Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!