python - 以编程方式更新 Zapier 存储

标签 python python-requests zapier

我一直在通过 store.zapier.com 端点使用 Zapier 存储 API,并成功设置和检索值。然而,我最近发现需要存储更复杂的信息,我想随着时间的推移更新这些信息。

我目前存储的数据如下所示:

{
"task_id_1": {"google_id": "google_id_1", "due_on": "2018-10-24T17:00:00.000Z"},
"task_id_2": {"google_id": "google_id_2", "due_on": "2018-10-23T20:00:00.000Z"}, 
"task_id_3": {"google_id": "google_id_3", "due_on": "2018-10-25T21:00:00.000Z"},
}

我想做的是更新任意 task_id_n 的“due_on”子值,而不必删除并再次添加它。阅读 store.zapier.com 上的 API 信息,我看到您可以发送补丁请求并结合特定操作以更好地控制存储的数据。我尝试按如下方式使用补丁请求和“set_child_value”操作:

def update_child(self, parent_key, child_key, child_value):

        header = self.generate_header()

        data = {
            "action" : "set_child_value",
            "data" : {
                "key" :  parent_key,
                "value" : {child_key : child_value}
            }
        }

        result = requests.patch(self.URL, headers=header, json=data)
        return result

当我发送此请求时,Zapier 以 200 状态代码响应,但存储未更新。有什么我可能遗漏的想法吗?

最佳答案

Zapier Store 似乎没有验证“action”和“data”字段之后的请求正文。

当您将 "data" 字段设置为数组发出请求时,您会触发一个验证错误,该错误描述了数据字段的架构(这是一种查找 API 文档的方式!嗯)。

在请求正文中,“set_child_value”操作的数据字段架构是:

{
    "action" : {
        "enum": [
            "delete",
            "increment_by",
            "set_child_value",
            "list_pop",
            "set_value_if",
            "remove_child_value",
            "list_push"
        ]
    },
    "data" : {
        "key" :  {
            "type": "object"
        },        
        "values" : {
            "type": "object"
        }
    }
}

请注意,它是"values" 而不是"value"

关于python - 以编程方式更新 Zapier 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52965280/

相关文章:

python - 从类方法调用实例方法,在python3中允许,在python2中不允许?

python - 如何在Python中下载具有默认名称和类型的文件

javascript - 使用 zapier 创建链接数组

python - 从 python-alpine 安装 MySQL-python 失败

python线程仅在加入后打印到stdout

python - 如何使用networkx图根据中间节点的属性值找到2个节点之间的路径?

python - 如何根据 google chrome 检查器提供的信息发出 xml http post 请求

python - 无法从 shopee.com 抓取最畅销的产品

dropbox - 当 Dropbox 不支持 Webhooks 时,Zapier 如何支持 Dropbox?

javascript - Zapier Webhooks 和 AJAX 请求