我正在使用第 3 版(是的,我知道有 google drive API)并且我正在尝试按照此处批处理 ACL 请求。
我在谷歌游乐场(以及我自己的代码)中运行了一个测试,以将 150 个用户作为“作者”(角色)添加到文档中。
xml 看起来像:
<feed xmlns="http://www.w3.org/2005/Atom"
xmlns:gAcl="http://schemas.google.com/acl/2007"
xmlns:batch="http://schemas.google.com/gdata/batch">
<category scheme="http://schemas.google.com/g/2005#kind"
term="http://schemas.google.com/acl/2007#accessRule"/>
<entry>
<id>https://docs.google.com/feeds/default/private/full/document:1111/acl/user:owner@example.com</id>
<batch:operation type="query"/>
</entry>
<entry><batch:id>1</batch:id><batch:operation type="insert"/><gAcl:role value="writer"/><gAcl:scope type="user" value="test1@example.com"/></entry>
<entry><batch:id>2</batch:id><batch:operation type="insert"/><gAcl:role value="writer"/><gAcl:scope type="user" value="test2@example.com"/></entry>
....
<entry><batch:id>150</batch:id><batch:operation type="insert"/><gAcl:role value="writer"/><gAcl:scope type="user" value="test150@example.com"/></entry>
</feed>
处理这个需要 60 秒以上,然后响应返回 500 错误。它似乎确实添加了所有 150,但需要一段时间。如果我要直接在 google 共享对话框的文本区域中添加 150 个电子邮件地址,则需要更短的时间(8-10)。
我没有正确使用 API 吗?API 不是模仿 google 分享 UI 界面吗?
更新:在进一步研究中,批处理 api 看起来实际上只是在“通过网络”节省您的时间,但在服务器端(谷歌)它只是一次发送一个请求。我可以看到,如果我直接在 google 共享对话框的文本区域中添加 150 个电子邮件地址,则需要 8-10 秒,然后如果我添加 151,则需要 8-10 秒。这告诉我谷歌正在根据现有列表验证新条目。通过直接的在线互动,它可以一次完成所有 150 个;使用批次,它一次需要一个并在每个之后进行验证 - 总时间为 5 分钟以上。