如何使用App Script或Python将Google Drive内的MS Word转换为Google Docs?
Google Drive Word文件转Google Docs实现方案
完全可以实现该需求,核心是调用Google Drive API的文件复制能力,指定目标MIME类型即可完成自动转换,不需要下载文件到本地再重新上传。
实现原理
Google Drive原生支持跨格式转换,只要在复制文件时将目标MIME类型设置为application/vnd.google-apps.document,即可直接将MS Word文件(常规MIME类型为application/vnd.openxmlformats-officedocument.wordprocessingml.document)转换为Google Docs格式。
前置准备
- 前往Google Cloud控制台启用Google Drive API,创建服务账号密钥或者OAuth2授权凭证,将密钥文件保存为
credentials.json放在脚本同级目录 - 安装所需依赖库:
pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib openpyxl - 确认你使用的授权账号对电子表格中所有Word文件拥有至少查看权限,对转换后文件的目标存储位置拥有写入权限
从URL提取文件ID的方法
常规Google Drive文件URL格式为https://drive.google.com/file/d/<文件ID>/xxxx,只需要截取d/后到下一个/之间的字符串即可得到唯一文件ID,不需要处理URL后续的多余参数。
完整Python脚本示例
from google.oauth2 import service_account from googleapiclient.discovery import build import openpyxl import time # 配置参数 SCOPES = ['https://www.googleapis.com/auth/drive'] SERVICE_ACCOUNT_FILE = 'credentials.json' # 替换为你的电子表格路径 EXCEL_PATH = '文件URL清单.xlsx' # 转换后文件的目标存储文件夹ID,留空则默认存在Drive根目录 TARGET_FOLDER_ID = '' # 初始化授权 creds = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES) drive_service = build('drive', 'v3', credentials=creds) # 提取文件ID工具函数 def get_file_id_from_url(url): if not isinstance(url, str) or 'd/' not in url: return None return url.split('d/')[1].split('/')[0] # 读取电子表格批量处理 wb = openpyxl.load_workbook(EXCEL_PATH) ws = wb.active # 假设URL存在第一列,从第二行开始遍历(跳过表头) for row_num, row in enumerate(ws.iter_rows(min_row=2, values_only=False), start=2): file_url = row[0].value if not file_url: continue file_id = get_file_id_from_url(file_url) if not file_id: print(f"无效URL,跳过:{file_url}") continue try: # 获取原文件名称 original_file = drive_service.files().get(fileId=file_id, fields='name').execute() original_name = original_file['name'].rsplit('.', 1)[0] # 配置转换参数 file_metadata = { 'name': f"{original_name}_转Google Docs版", 'mimeType': 'application/vnd.google-apps.document' } if TARGET_FOLDER_ID: file_metadata['parents'] = [TARGET_FOLDER_ID] # 执行转换 converted_file = drive_service.files().copy( fileId=file_id, body=file_metadata, fields='id, webViewLink' ).execute() # 可选:把转换后的Docs链接写回表格第二列 ws.cell(row=row_num, column=2, value=converted_file['webViewLink']) print(f"转换成功:{original_name}") # 批量处理加间隔避免触发API限流 time.sleep(1) except Exception as e: print(f"处理文件{file_url}失败:{str(e)}") # 保存修改后的电子表格 wb.save(EXCEL_PATH)
注意事项
- 复杂Word格式(如宏、特殊控件、自定义排版规则)转换后可能存在偏差,批量处理后建议抽查部分文件
- 如果不需要保留原Word文件,可以在转换成功后调用
drive_service.files().delete(fileId=file_id).execute()删除原文件 - 若使用个人账号授权而非服务账号,仅需将授权逻辑替换为OAuth2桌面端授权流程即可,核心转换逻辑不需要修改
内容的提问来源于stack exchange,提问作者arda0910
相关产品推荐
相关产品推荐

