我正在尝试使用DevKit浏览我的QuickBooks Online帐户中的所有现有客户,并更新每个客户的显示名称,以便将公司名称添加到我已分配给他们的公司ID中。目前,该帐户中约有1800个客户。
使用下面的代码,我每次运行脚本时都可以成功处理100个客户,但此时它会停止。服务客户查询返回的行是否有时间或数量限制?如果是这样,有没有办法增加它?或问题完全是另一回事?
Quickbooks_update:
class Quickbooks_Update extends CI_Controller
{
function quickbooks_add(){
require_once 'application/QuickBooks/config.php';
$this->load->model('companyAccounts');
$success = array();
$failed = array();
$duplicate = array();
$not_exist = array();
$CustomerService = new QuickBooks_IPP_Service_Customer();
$customers = $CustomerService->query($Context, $realm, "SELECT * FROM Customer ");
foreach($customers as $customer) {
$name = $customer->getCompanyName();
$q = $this->db->select('companyAccountId');
$q = $this->db->from('companyAccounts');
$q = $this->db->where('companyName', $name);
$q = $this->db->get();
$results = $q->result();
foreach($results as $company){
$companyId = $company->companyAccountId;
}
if(sizeof($results) == 1){
$customer->setDisplayName($companyId . '-' . $name);
$resp = $CustomerService->update($Context, $realm, $customer->getId(), $customer);
if(!$resp){
array_push($failed, $name);
}else{
array_push($success, $name);
}
}
else if(sizeof($results) == 0){
array_push($not_exist, $name);
}
else{
array_push($duplicate, $name);
}
}
$data['success'] = $success;
$data['failed'] = $failed;
$data['duplicate'] = $duplicate;
$data['not_exist'] = $not_exist;
$this->load->view('quickbooks', $data);
}
}
谢谢!
答案 0 :(得分:2)
QuickBooks Online默认情况下一次只返回100行。
如果您参考文档:
https://developer.intuit.com/docs/0100_accounting/0300_developer_guides/querying_data
您会找到一些示例,说明如何使用STARTPOSITION
和MAXRESULTS
来控制您获取的记录数量:
SELECT * FROM Invoice WHERE Status = 'Synchronized'STARTPOSITION 1 MAXRESULTS 10
SELECT * FROM Invoice WHERE Status = 'Synchronized'STARTPOSITION 11 MAXRESULTS 10
引用文档:
要翻阅结果,请指定STARTPOSITION(查询结果中实体的位置)和MAXRESULTS(结果中的最大实体数)。
和
响应中可以返回的最大实体数为1000.如果未指定结果大小,则默认数为100.如果查询返回许多实体,则按分块中的描述获取块中的实体。要确定特定查询返回的实体数,请使用查询中的COUNT关键字进行探测。有关详细信息,请参阅计数。