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

如何通过HTML向Google Forms提交文件?若无方案求免费传Google Drive方法

模拟Google Forms文件上传问题及替代方案

为什么直接提交文件会失败

Google Forms的formResponse端点仅支持文本类字段的直接提交,文件上传字段无法通过自定义表单直接对接——因为文件上传需要依赖Google的登录验证和内部文件处理流程,外部表单无法绕过这些机制,即使你找到了文件字段对应的entry.xxx参数,直接提交也会被拦截。

可行方案:用Google Apps Script实现文件上传到Drive

这是免费且简单的方法,通过Google Apps Script搭建轻量后端,接收HTML表单的文件并保存到你的Google Drive文件夹。

步骤1:创建并配置Google Apps Script

  1. 打开Google Apps Script平台,新建空白项目。
  2. 替换默认代码为以下脚本:
function doPost(e) {
  try {
    // 提取表单提交的文本数据
    const userName = e.parameter.nome;
    const userEmail = e.parameter.email;
    // 获取上传的文件列表
    const uploadedFiles = e.files.fotos;

    // 定位或创建目标文件夹
    const targetFolderName = "表单上传文件库";
    let targetFolder = DriveApp.getFoldersByName(targetFolderName).next();
    if (!targetFolder) {
      targetFolder = DriveApp.createFolder(targetFolderName);
    }

    // 逐个保存文件到Drive
    uploadedFiles.forEach(fileBlob => {
      // 为文件添加提交者标识,方便管理
      const newFileName = `${userName}_${userEmail}_${fileBlob.getName()}`;
      targetFolder.createFile(fileBlob).setName(newFileName);
    });

    // 返回成功响应
    return ContentService.createTextOutput(JSON.stringify({
      status: "success",
      message: "所有文件上传完成"
    })).setMimeType(ContentService.MimeType.JSON);
  } catch (err) {
    // 返回错误信息
    return ContentService.createTextOutput(JSON.stringify({
      status: "error",
      message: err.toString()
    })).setMimeType(ContentService.MimeType.JSON);
  }
}

步骤2:部署为Web应用

  1. 点击右上角「部署」→「新部署」。
  2. 部署类型选择「Web应用」:
    • 执行权限:选择「我自己」
    • 访问权限:根据需求选择,公开使用选「任何人,甚至匿名」,仅限内部使用选「仅限组织内用户」或「仅限自己」
  3. 点击「部署」,复制生成的Web应用URL,后续会用到。

步骤3:修改HTML表单

将表单改为通过JavaScript提交到Web应用,调整后的代码如下:

<form id="contactForm">
  <label for="nome">姓名:</label>
  <input type="text" id="nome" name="nome" required>
  <br>
  <label for="email">邮箱:</label>
  <input type="email" id="email" name="email" required>
  <br>
  <label for="fotos">上传照片(最多3张):</label>
  <input type="file" id="fotos" name="fotos" multiple accept="image/*">
  <br>
  <button type="button" id="submitBtn">提交</button>
</form>

<script>
document.getElementById('submitBtn').addEventListener('click', function() {
  const form = document.getElementById('contactForm');
  const formData = new FormData(form);

  // 替换为你的Web应用URL
  fetch('你的Web应用URL', {
    method: 'POST',
    body: formData
  })
  .then(res => res.json())
  .then(result => {
    if (result.status === 'success') {
      alert('文件上传成功!');
      form.reset();
    } else {
      alert('上传失败:' + result.message);
    }
  })
  .catch(err => alert('上传出错:' + err));
});
</script>

注意事项

  • 免费版Google Drive有15GB总容量限制,单个文件大小不能超过对应类型的上限(比如图片通常支持最大10GB)。
  • 如果选择匿名访问,任何人都能上传文件到你的Drive,若需要限制,可在脚本中添加邮箱验证或其他逻辑。
  • 修改脚本后需重新部署才能生效,部署时选择「替换现有部署」即可。

内容的提问来源于stack exchange,提问作者augustomathhh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 04:00:21