You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:54:03