【问题标题】:Google shopping API: How to update shippingsettings incrementally?Google 购物 API:如何逐步更新 shippingsettings?
【发布时间】:2018-06-12 14:02:27
【问题描述】:

我有一个大型数据集,需要将其推送到 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 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

但是,每个服务只会覆盖前一个服务。据我所知,“补丁”似乎就像“更新”一样运作。有谁知道如何进行这项工作?

【问题讨论】:

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


    【解决方案1】:

    不是 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 都包含的字段可选参数。然后你可以只请求你想要更新的字段,然后发送一个补丁。

    【讨论】:

    • DalmTo,谢谢你,听起来你明白我在说什么。问题是补丁看起来就像更新一样 - 它不会保留现有字段。 (其他服务。)这让我怀疑我是否使用不正确。
    • 诀窍是发送一个仅包含您要更新的提要的对象。不是完整的对象
    • DalmTo - 谢谢。我想知道我是否需要“自己动手”来做到这一点,而不是使用 PHP 包装器,它似乎把所有东西都放在那里。我要试一试。谢谢。
    • $settings 应该只包含您要更改的值,其他所有内容都应该为 null
    • Google 的某个人回答了我关于他们的群组的问题,并说无论是通过图书馆还是直接使用 shippingsettings 对象,这都是不可能的。他们不支持一次添加/编辑一项服务。
    猜你喜欢
    • 2019-01-11
    • 2017-01-16
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 2020-11-27
    • 2018-12-28
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多