如何在将TXT文件上传至Google Drive后获取可直接编辑的Google Docs链接
如何获取Google Drive上传文件的直接Google Docs编辑链接?
我希望将TXT文件上传至Google Drive,并获取可直接进入编辑页面的链接,当前编写的方法返回的链接会跳转至文档查看器,需手动点击“用Google Docs打开”才可进入编辑界面。但我需要的是可直接打开Google Docs编辑页面的链接,请问是否可以在将文件上传至Google Drive后获取这样的直接Google Docs链接?
当然可以!核心思路是让Google Drive API在上传TXT文件时自动将其转换为原生的Google Docs格式,这样你拿到的文件ID就是Docs文档的ID,直接构造编辑链接即可。
具体解决方案
启用自动转换
在调用files().create()时加上convert=True参数,这个参数会告诉API把上传的TXT文件转换成Google Docs格式,返回的file_id就是转换后Docs文档的唯一标识。构造正确的编辑链接
Google Docs的直接编辑链接格式是固定的:https://docs.google.com/document/d/{file_id}/edit把获取到的
file_id替换进去,就能得到直接跳转编辑页面的链接,无需手动点击转换。
修改后的完整代码
def upload(self, file_name, filepath, folder_id, file_id=None, mimeType='text/plain'): media = MediaFileUpload( filepath, mimetype=mimeType, resumable=True) try: if file_id is None: file_metadata = {"name": file_name, "parents": [folder_id]} # 关键:添加convert=True自动转换为Google Docs file = self.drive.files().create( body=file_metadata, media_body=media, fields='id', convert=True).execute() file_id = file.get('id') # 构造直接编辑链接 edit_url = f'https://docs.google.com/document/d/{file_id}/edit' else: # 更新场景:假设file_id对应的是已有的Google Docs文件 file_metadata = {"name": file_name} self.drive.files().update( body=file_metadata, removeParents='root', media_body=media, fileId=file_id).execute() edit_url = f'https://docs.google.com/document/d/{file_id}/edit' return file_name, file_id, edit_url
注意事项
- 使用
convert=True后,API会直接生成Google Docs文件,原TXT文件不会被保留;如果需要同时保留原文件,你可以先上传TXT,再调用转换API生成Docs文件(这样会得到两个独立的文件)。 - 确保你的API授权范围包含
https://www.googleapis.com/auth/drive,否则可能没有转换权限。 - 如果你要更新的是已存在的TXT文件,建议先把它转换成Google Docs格式再更新,不然更新后还是需要手动触发转换才能进入编辑页面。
内容的提问来源于stack exchange,提问作者Lynob




