如何使用googledrive::drive_upload()上传时不改变文件Google ID
问题原因
googledrive::drive_upload() 的 overwrite=TRUE 参数底层逻辑为先删除Drive中匹配到的同名文件,再上传全新文件,因此每次执行都会生成新的Google文件ID,自然会导致原有共享链接失效。
补充提示:你提供的示例代码中包名拼写存在笔误,正确包名为
googledrive。
保留原ID的解决方法
要保留原有ID的同时覆盖文件内容,需使用googledrive包的drive_update()函数,该函数会直接替换目标文件的内容,不会修改文件ID,操作步骤如下:
- 第一步:定位Drive中需要被覆盖的原有文件,获取其文件对象。推荐直接用已知的文件ID定位,避免同名文件匹配错误
- 第二步:调用
drive_update()执行内容覆盖,格式转换逻辑和你原有上传配置保持一致即可
代码示例
# 方式1:按文件名定位目标文件 target_file <- googledrive::drive_get(path = "My Presentation") # 方式2:直接用原有文件ID定位,精准度更高 # target_file <- googledrive::drive_get(id = "替换为你的原有文件Google ID") # 执行内容覆盖,文件ID保持不变 googledrive::drive_update( file = target_file, media = my_pres, type = "presentation" )
注意:如果是首次上传还没有生成对应文件ID,可以先执行一次
drive_upload()生成初始文件,记录好对应的ID,后续所有更新操作都使用drive_update()即可保证所有共享链接永久有效。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

