使用 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 表格中创建新表格