【发布时间】:2020-03-29 18:33:57
【问题描述】:
讨论
Google Drive API v3:Create Folder
云驱动 API 比较
创建文件夹时的其他云盘API,包括Box API和Dropbox API,如果同名文件夹已经存在,都会返回冲突错误父文件夹。
但是,Google Drive API 默认允许创建同名文件夹。
问题
如果尝试在 Google Drive 父文件夹中创建同名文件夹,有没有办法返回冲突错误?
如果我采用 API 的方法首先按名称搜索文件夹,然后创建文件夹(如果不存在),那么这可能会导致并行进程在按名称创建唯一文件夹时执行相同任务而导致可能的竞争条件。
示例
Google Drive API 在curl 中创建文件夹调用
curl "https://www.googleapis.com/drive/v3/files" \
--request POST \
--verbose \
--write-out 'HTTPSTATUS:%{http_code}' \
--silent \
--header "authorization: Bearer [** ACCESS TOKEN **]" \
--header "cache-control: no-cache" \
--header "content-type: application/json; charset=utf-8" \
--header "Accept: application/json" \
--data '{ \
"mimeType":"application\/vnd.google-apps.folder", \
"name": "[** FOLDER NAME **]", \
"parents": ["root"] \
}'
每次调用都会在 Google Drive 父文件夹中创建一个具有唯一文件夹 ID,但文件夹名称相同的新文件夹。我希望避免这种情况:
Success [HTTP status: 200]
{
"kind": "drive#file",
"id": "1mpy2-TVeZDTL8vZ6fKHTyoGoFHX-18EN",
"name": "TEST",
"mimeType": "application/vnd.google-apps.folder"
}
...
Success [HTTP status: 200]
{
"kind": "drive#file",
"id": "1iqYnEWOVFcWO3jWX1IgIv2wxtGVYruQX",
"name": "TEST",
"mimeType": "application/vnd.google-apps.folder"
}
感谢您在获得单一调用方法以返回冲突错误或自动重命名方面的任何帮助。
【问题讨论】:
-
杰夫,你能找到一个单一的呼叫解决方案吗?如果我们有办法将字符串散列为有效的 Google 项目 ID,那么两个工作人员将能够在创建请求期间使用相同的 ID 并获得碰撞检测。但如果 Google 自己记账它生成的 ID,那么这样的哈希函数似乎不太可能......
标签: google-apps-script directory google-drive-api