使用 Google Apps 脚本创建 Etag 字符串

Posted

技术标签:

【中文标题】使用 Google Apps 脚本创建 Etag 字符串【英文标题】:Create Etag string using Google apps script 【发布时间】:2021-10-12 21:18:35 【问题描述】:

我使用 Google people API 更新联系人。

我保存创建的联系人的资源名称,当我更新联系人时,我只使用此代码

People.People.updateContact("emailAddresses": [
                "type": "work",
                "value": "example@gmail.com"
            ], "people/c6679930577989153852")

但这会引发错误 - GoogleJsonResponseException:对 people.people.updateContact 的 API 调用失败并出现错误:请求必须为正在更新的源设置 person.etag 或 person.metadata.sources.etag。

如果我在创建联系人时没有存储创建的 etag,如何创建 etag? 有没有办法可以使用函数创建新的 etag,以便强制更新整个联系人?

如果是这样,我该如何创建 updatePersonFields 掩码?

【问题讨论】:

你的效果如何? 【参考方案1】:

如何处理etag Contacts API 错误。

如果 person.metadata.sources.etag 与联系人的 etag 不同,则服务器返回 400 错误,原因为“failedPrecondition”,这表明联系人在读取数据后发生了更改。客户应该获取最新的人并将他们的更新合并到最新的人中。

Source

所以你认为你需要etag 才能完成你想要的操作是正确的。

但是,生成它并不是正确的方法。

您需要首先使用任何personFields 发出一个简单的get 请求,以获取当前的etag 值。然后你会在更新中使用这个etag 值。

这是为了防止您覆盖和复制可能很重要的信息。

参考

updateContact get

【讨论】:

以上是关于使用 Google Apps 脚本创建 Etag 字符串的主要内容,如果未能解决你的问题,请参考以下文章

text 使用Google Apps脚本创建Google表格的自动计划备份副本

如何使用 Google Apps 脚本创建/更改具有给定 Meet URL 的 Google 日历活动?

使用 Google Apps 脚本创建 Strava Webhook 订阅时出现问题

使用 Google Apps 脚本在 Google 表格中创建新表格

在 Google Apps 脚本中使用高级 Gmail 服务创建与表情符号兼容的 Gmail 草稿

从移动应用程序执行 Google Apps 脚本功能