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

自定义表单提交时用Google Script获取Drive文件链接写入Sheet

问题核心原因

你当前的表单输入框#upload_MC默认存储的是本地文件名,提交给Google Form时自然只会把文件名写入关联Sheet。只要将文件上传完成后拿到的Drive访问链接回填到这个输入框,就能实现你的需求。

所需修改的代码

1. 修改 Page.html 的JS逻辑

找到uploadMC函数中的fetch请求部分,在拿到返回结果后将Drive链接回填到输入框,同时可增加提交按钮状态控制避免未上传完成就提交:

function uploadMC(){
  const file = form.file.files[0];
  // 上传过程中禁用提交按钮
  document.getElementById('submit').disabled = true;
  const fr = new FileReader();
  fr.readAsArrayBuffer(file);
  fr.onload = (f) => {
    const url = "https://script.google.com/macros/s/###/exec"; //替换为你的Web Apps URL

    const qs = new URLSearchParams({
      filename: file.name,
      mimeType: file.type,
    });
    fetch(`${url}?${qs}`, {
      method: "POST",
      body: JSON.stringify([...new Int8Array(f.target.result)]),
    })
      .then((res) => res.json())
      .then((fileUrl) => {
        // 将拿到的文件链接回填到表单输入框,替换原有文件名
        document.getElementById('upload_MC').value = fileUrl;
        // 上传完成恢复提交按钮
        document.getElementById('submit').disabled = false;
      })
      .catch((err) => {
        console.log(err);
        document.getElementById('submit').disabled = false;
        alert('文件上传失败,请重试');
      });
  };
}

2. 修改 Code.gs 增加文件权限配置

默认上传的文件只有你自己可以访问,需要新增权限配置让所有拿到链接的人都能查看文件:

function doGet(e){
  return HtmlService.createTemplateFromFile("page").evaluate().addMetaTag("viewport", "width=device-width, initial-scale=1.0");
}

function doPost(e) {
  const folderId = "###"; // 替换为你的目标文件夹ID

  const blob = Utilities.newBlob(
    JSON.parse(e.postData.contents),
    e.parameter.mimeType,
    e.parameter.filename
  );
  const file = DriveApp.getFolderById(folderId || "root").createFile(blob);
  // 新增:设置文件权限为「所有知道链接的人可查看」
  file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
  const responseObj = file.getUrl();
  return ContentService.createTextOutput(
    JSON.stringify(responseObj)
  ).setMimeType(ContentService.MimeType.JSON);
}

验证步骤

修改完成后重新部署Web App(注意部署版本号要更新),上传文件后可以看到输入框内原本的文件名会变成https://drive.google.com/...开头的链接,提交表单后关联的Sheet里就会直接写入这个访问链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 15:36:03