Google shopping API: 如何增量更新发货设置?

Google shopping API: How to update shippingsettings incrementally?

我有一个大型数据集,我需要将其推送到 Google Merchant Center 中的帐户级运输设置。我正在通过 PHP 客户端库使用 Google 购物 API。

如果我加载数据的一个子集并在最后调用它一次,它工作正常:

$settings = $clientservice->shippingsettings->get('XXXXXX', 'XXXXXX');

for each data point that represents a service
    for each data point that represents a rate group
        create weight/destination state table
    next
next

$settings->setServices($services);
$updatedSettings = $clientservice->shippingsettings->update('XXXXXX', 'XXXXXX', $settings);

但是,如果我加载整组数据并尝试立即应用它,我会收到 413 Request Too Large 响应。所以我想逐步加载它,一次加载一项服务。我试过这个:

$settings = $clientservice->shippingsettings->get('XXXXXX', 'XXXXXX');

for each data point that represents a service
    for each data point that represents a rate group
        create weight/destination state table
    next
    $settings->setServices([$service]);
    $updatedSettings = $clientservice->shippingsettings->patch('XXXXXX', 'XXXXXX', $settings);
next

但是,每项服务只是覆盖前一项服务。据我所知,"patch" 似乎与 "update" 一样运作。有人知道如何进行这项工作吗?

不是 100% 确定我理解你问题的问题部分。但是我可以告诉您,此更新将更新您随请求发送的所有字段。假设我们有一个对象

class Foo { 
    public $aname= 'Jane'; 
    public $aaddress = '12 Blueberry Hill'; 
    public $aage = '23';        

} 

如果我进行更新

 update('Jane Doe', '12 Blueberry Hill');

它期望在此实例中发送的所有文件年龄可能会设置为空,因为它未包含在请求中。

现在补丁只会更新您包含的字段

 update('Jane Doe', '112 Blueberry Hill');

因此此请求将更新姓名和地址,而不涉及年龄。

如果您遇到大小问题,那么您应该查看您使用的 api 是否包括我认为大多数 Google api 都包含的字段可选参数。然后你可以只请求你想要更新的字段,然后发送一个补丁。