导读:本期聚焦于小伙伴创作的《如何使用Python在指定Google Drive文件夹中创建Google表单》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何使用Python在指定Google Drive文件夹中创建Google表单》有用,将其分享出去将是对创作者最好的鼓励。

使用Python在指定Google Drive文件夹中创建Google表单,核心是通过Google提供的Drive API和Forms API完成授权、表单创建、文件夹定位三个核心步骤,整个过程可以自动化执行,避免手动操作的繁琐。

如何使用Python在指定Google Drive文件夹中创建Google表单

前置准备

在编写代码前,需要完成以下配置:

  • 拥有一个Google账号,并且可以正常访问Google Drive和Google Forms服务
  • 在Google Cloud控制台创建项目,开启Google_Drive_APIGoogle_Forms_API服务
  • 创建OAuth 2.0客户端ID,下载对应的凭证文件,重命名为credentials.json保存到项目目录
  • 安装必要的Python依赖库,执行以下命令:
pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client

核心实现步骤

1. 完成Google API授权

首先需要通过OAuth 2.0完成授权,获取访问令牌,代码如下:

from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
import os

# 定义需要申请的权限范围
SCOPES = [
    'https://www.googleapis.com/auth/forms',
    'https://www.googleapis.com/auth/drive'
]

def get_credentials():
    creds = None
    # 检查是否存在已保存的令牌
    if os.path.exists('token.json'):
        creds = Credentials.from_authorized_user_file('token.json', SCOPES)
    # 如果没有有效令牌,发起授权流程
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
            creds = flow.run_local_server(port=0)
        # 保存令牌供后续使用
        with open('token.json', 'w') as token:
            token.write(creds.to_json())
    return creds

2. 创建Google表单

授权完成后,调用Forms API创建新的表单,设置表单的标题和基本信息:

from googleapiclient.discovery import build

def create_google_form(creds, form_title, form_description):
    # 构建Forms服务
    forms_service = build('forms', 'v1', credentials=creds)
    # 定义表单的创建请求体
    form_body = {
        'info': {
            'title': form_title,
            'documentTitle': form_title,
            'description': form_description
        }
    }
    # 发起创建表单请求
    result = forms_service.forms().create(body=form_body).execute()
    form_id = result['formId']
    print(f"表单创建成功,表单ID:{form_id}")
    return form_id, result['responderUri']

3. 将表单移动到指定Google Drive文件夹

Google Forms创建后会默认保存到Drive的根目录,我们需要调用Drive API将其移动到指定的文件夹中,首先需要获取目标文件夹的ID:

def get_folder_id(creds, folder_name):
    # 构建Drive服务
    drive_service = build('drive', 'v3', credentials=creds)
    # 查询指定名称的文件夹
    query = f"name='{folder_name}' and mimeType='application/vnd.google-apps.folder' and trashed=false"
    response = drive_service.files().list(q=query, spaces='drive').execute()
    folders = response.get('files', [])
    if not folders:
        raise ValueError(f"未找到名称为{folder_name}的文件夹,请先在Drive中创建该文件夹")
    return folders[0]['id']

def move_form_to_folder(creds, form_id, folder_id):
    drive_service = build('drive', 'v3', credentials=creds)
    # 获取表单当前的父目录ID
    file = drive_service.files().get(fileId=form_id, fields='parents').execute()
    previous_parents = ",".join(file.get('parents'))
    # 更新表单的父目录为指定文件夹
    drive_service.files().update(
        fileId=form_id,
        addParents=folder_id,
        removeParents=previous_parents,
        fields='id, parents'
    ).execute()
    print(f"表单已成功移动到文件夹ID:{folder_id}中")

4. 整合完整流程

将上述步骤整合,实现完整的创建并移动表单的功能:

def main():
    # 配置参数
    FORM_TITLE = "用户满意度调查表单"
    FORM_DESCRIPTION = "本表单用于收集用户对产品的满意度反馈"
    TARGET_FOLDER_NAME = "表单存档"  # 替换为你自己的Google Drive文件夹名称
    
    # 获取授权凭证
    creds = get_credentials()
    # 创建表单
    form_id, form_url = create_google_form(creds, FORM_TITLE, FORM_DESCRIPTION)
    print(f"表单访问地址:{form_url}")
    # 获取目标文件夹ID
    folder_id = get_folder_id(creds, TARGET_FOLDER_NAME)
    # 移动表单到指定文件夹
    move_form_to_folder(creds, form_id, folder_id)

if __name__ == '__main__':
    main()

注意事项

  • 首次运行代码时会弹出Google账号授权页面,需要登录有对应文件夹访问权限的账号完成授权
  • 目标文件夹必须已经存在,代码不会自动创建文件夹,如果不存在会抛出对应异常
  • 凭证文件credentials.json需要妥善保管,不要泄露给他人,避免账号权限被滥用
  • 如果后续需要修改表单的问题内容,可以调用Forms API的forms().batchUpdate()方法实现,具体可以参考Google官方API文档

PythonGoogle_DriveGoogle_FormsGoogle_API修改时间:2026-06-25 16:42:22

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。