使用发送电子邮件地址上传文件的表单 [英] Form to upload files with sending email address

查看:130
本文介绍了使用发送电子邮件地址上传文件的表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个使用这个脚本上传文件的表单:

JS:

  var dropBoxId =XXXXXXXXXXX; //'dropbox'文件夹的驱动器ID 
var logSheetId =XXXXXXXXXXXX; //日志电子表格的驱动器ID

函数doGet(e){
return HtmlService.createHtmlOutputFromFile('form.html');
}

函数uploadFiles(formObject){
try {
//在$ Drive $中创建一个文件
var folder = DriveApp.getFolderById(dropBoxId);
var blob = formObject.myFile;
var file = folder.createFile(blob);
file.setDescription(Uploaded by+ formObject.myName);

//打开日志并记录新的文件名,URL和表单
var ss = SpreadsheetApp.openById(logSheetId);
var sheet = ss.getSheets()[0];
sheet.appendRow([file.getName(),file.getUrl(),formObject.myName]);

//返回新文件Drive URL,以便将其放入Web应用程序输出
return file.getUrl();
} catch(error){
return error.toString();


$ / code $ / pre
$ b

HTML:

 < form id =myForm> 
< input type =textname =myNameplaceholder =您的全名.../>
< input name =myFiletype =file/>
< input type =buttonvalue =Submit
onclick =google.script.run
.withSuccessHandler(updateUrl)
.withFailureHandler(onFailure)
.uploadFiles(this.parentNode)/>
< / form>

< div id =output>< / div>

< script>
函数updateUrl(url){
var div = document.getElementById('output');
div.innerHTML ='< a href ='+ url +'>知道了!< / a>';
}
function onFailure(error){
alert(error.message);
}
< / script>

< style>
input {display:block; margin:20px; }
< / style>

我希望我的用户也可以通过表单发送他们的电子邮件地址。我如何更改代码?

解决方案

如果您希望用户在表单中提供他们的电子邮件,请添加字段:

 < input type =textname =myEmailplaceholder =Your Email .../> 

在脚本中可以从formObject获取电子邮件的值:

  var userEmail = formObject.myEmail; 

HTML:

 < form id =myForm> 
< input type =textname =myNameplaceholder =您的全名.../>
< input type =textname =myEmailplaceholder =Your Email .../>
< input name =myFiletype =file/>



JS:

  function uploadFiles(formObject){
try {
//在$ Drive $中创建一个文件
var folder = DriveApp.getFolderById(dropBoxId);
var blob = formObject.myFile;

var userEmail = formObject.myEmail;

var file = folder.createFile(blob);
file.setDescription(Uploaded by+ formObject.myName);




I created a form to upload files using this script:

JS:

var dropBoxId = "XXXXXXXXXXX"; // Drive ID of 'dropbox' folder
var logSheetId = "XXXXXXXXXXXX"; // Drive ID of log spreadsheet

function doGet(e) {
  return HtmlService.createHtmlOutputFromFile('form.html');
}

function uploadFiles(formObject) {
  try {
    // Create a file in Drive from the one provided in the form
    var folder = DriveApp.getFolderById(dropBoxId);
    var blob = formObject.myFile;    
    var file = folder.createFile(blob);    
    file.setDescription("Uploaded by " + formObject.myName);

    // Open the log and record the new file name, URL and name from form
    var ss = SpreadsheetApp.openById(logSheetId);
    var sheet = ss.getSheets()[0];
    sheet.appendRow([file.getName(), file.getUrl(), formObject.myName]);

    // Return the new file Drive URL so it can be put in the web app output
    return file.getUrl();
  } catch (error) {
    return error.toString();
  }
}

HTML:

<form id="myForm">
  <input type="text" name="myName" placeholder="Your full name..."/>
  <input name="myFile" type="file" />
  <input type="button" value="Submit"
      onclick="google.script.run
          .withSuccessHandler(updateUrl)
          .withFailureHandler(onFailure)
          .uploadFiles(this.parentNode)" />
</form>

<div id="output"></div>

<script>
    function updateUrl(url) {
        var div = document.getElementById('output');
        div.innerHTML = '<a href="' + url + '">Got it!</a>';
    }
    function onFailure(error) {
        alert(error.message);
    }
</script>

<style>
  input { display:block; margin: 20px; }
</style>

I would like that my users can send also their email address by the form. How do I change the code?

解决方案

If you want the user to supply their email in the form add the field:

<input type="text" name="myEmail" placeholder="Your Email..."/>

Inside your script get the email value from the formObject:

var userEmail = formObject.myEmail;

HTML:

<form id="myForm">
  <input type="text" name="myName" placeholder="Your full name..."/>
  <input type="text" name="myEmail" placeholder="Your Email..."/>
  <input name="myFile" type="file" />
  .
  .
  .

JS:

function uploadFiles(formObject) {
  try {
    // Create a file in Drive from the one provided in the form
    var folder = DriveApp.getFolderById(dropBoxId);
    var blob = formObject.myFile;

    var userEmail = formObject.myEmail;

    var file = folder.createFile(blob);
    file.setDescription("Uploaded by " + formObject.myName);
    .
    .
    .

这篇关于使用发送电子邮件地址上传文件的表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆