谷歌表单文件上传完整示例 [英] Google Forms file upload complete example
问题描述
如何允许我的查看者使用 Google 表单将一些文件上传到我的表单并将其保存到我的 Google 云端硬盘?
我正在寻找一个完整的示例:它必须说明要添加到示例 Google 表单 HTML 源代码中的代码.如何使用 Google Apps Script 将查看者的文件上传到我的 Google Drive 帐户?
Google Forms 可以上传文件,但此解决方案不使用 Google Forms.此答案不是修改 Google 表单,这是无法完成的.这是一个使用 Google Apps Script Web App 的示例,它不同于 Google 表单.Web App 的功能与网站几乎相同,但您无法为其获取域名.
Apps Script 有一个名为 HTML Service 的服务,这就是这段代码所使用的.有关指南,请参阅:创建和提供 HTML
我想在开始的表单标签中使用 onsubmit
属性:<form onsubmit="myFunctionName()">
,它会导致Web App 在表单提交后从屏幕上消失.
如果您使用提交"键入 HTML 按钮,并想继续使用它,您可以尝试在提交事件处理函数中的代码中添加 event.preventDefault();
以防止浏览器选项卡尝试加载不同的HTML.或者您需要使用 google.script.run
客户端 API.
可以使用 Apps Script HTML 服务创建用于将文件从用户计算机驱动器上传到 Google 驱动器的自定义表单.这个例子需要编写一个程序,但我在这里提供了所有的基本代码.
此示例显示了带有 Google Apps Script HTML 服务的上传表单.
您需要什么
- Google 帐户
- Google 云端硬盘
- Google Apps Script - 也称为 Google Script
有多种方法可以在 Google Apps 脚本代码编辑器中结束.
- 直接从以下网址加载 Apps 脚本:https://script.google.com
- 先打开 Google Sheet,然后打开 Apps Script
- 转到您的 Google 云端硬盘,然后打开 Apps 脚本:https://drive.google.com/drive/#my-drive
- 转到您的 Google 云端硬盘,然后点击 Apps 脚本项目文件
- 从 Google 文档打开 Apps 脚本
- 等
我提到这一点是因为如果您不了解所有的可能性,可能会有点混乱.Google Apps 脚本可以嵌入到 Google 网站、表格、文档或表单中,也可以用作独立应用.
此示例是独立"示例带有 HTML 服务的应用.
HTML 服务 - 使用 HTML、CSS 和 Javascript 创建网络应用
Google Apps Script 在 Project
中只有两种类型的文件:
- 脚本
- HTML
脚本文件具有 .gs
扩展名..gs
代码是用 JavaScript 编写的服务器端代码,结合了 Google 自己的 API.
复制并粘贴以下代码
保存
创建第一个命名版本
发布
设置权限
然后你就可以开始使用它了.
开始于:
- 在 Apps 脚本中创建一个新的空白项目
- 复制并粘贴到此代码中:
使用 HTML 服务上传文件:
Code.gs 文件(默认创建)
//为此,您需要在 Google 驱动器中创建一个名为://'用于虚拟主机'//或将硬编码的文件夹名称更改为文件夹名称//你想要写入的文件函数 doGet(e) {返回 HtmlService.createTemplateFromFile('Form').evaluate()//必须在设置沙盒模式之前进行评估.setTitle('在浏览器标签中显示的名称');}函数 processForm(theForm) {var fileBlob = theForm.picToLoad;Logger.log("fileBlob 名称:" + fileBlob.getName())Logger.log("fileBlob 类型:" + fileBlob.getContentType())Logger.log('fileBlob: ' + fileBlob);var fldrSssn = DriveApp.getFolderById(你的文件夹ID);fldrSssn.createFile(fileBlob);返回真;}
创建一个 html 文件:
<头><基本目标=_top">头部><身体><h1 id="main-heading">主标题</h1><br/><div id="formDiv"><form id="myForm"><输入名称=picToLoad"类型=文件"/><br/><输入类型=按钮"值=提交"onclick="picUploadJs(this.parentNode)";/></表单>
<div id="状态"样式=显示:无"><!-- 表单提交后,div 将填充为innerHTML.-->正在上传.请稍等...
<脚本>函数 picUploadJs(frmData) {document.getElementById('status').style.display = 'inline';google.script.run.withSuccessHandler(updateOutput).processForm(frmData)};//由提交"调用的 Javascript 函数按钮处理程序,//显示结果.函数更新输出(){var outputDiv = document.getElementById('status');outputDiv.innerHTML = "文件已上传!";}