Google购物API:如何逐步更新送货设置?

时间:2018-06-12 14:02:28

标签: google-api-php-client google-shopping-api google-shopping

我有一个大型数据集,我需要将其推送到Google Merchant Center中的帐户级送货设置。我通过PHP客户端库使用Google Shopping 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请求太大的响应。所以我想逐步加载它,一次加载一个服务。我试过这个:

$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

但是,每项服务只会覆盖前一项服务。 "膜片"似乎操作就像"更新",尽我所知。任何人都知道如何使这项工作?

1 个答案:

答案 0 :(得分:1)

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

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

} 

如果我进行更新

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

它希望在此实例中发送的所有文件可能都会设置为null,因为它没有包含在请求中。

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

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

所以此请求将更新姓名和地址,而不是年龄。

如果您遇到大小问题,那么您应该看看您使用的API是否包含字段可选参数我认为大多数Google apis都会这样做。然后,您只能请求要更新的字段,然后发送一个补丁。