【问题标题】:Receive Files in Drive and send Confirmation Email在云端硬盘中接收文件并发送确认电子邮件
【发布时间】:2015-10-07 20:42:19
【问题描述】:

我想创建一个表单,允许任何人将多个文件上传到我的投递箱。但我也希望上传文件的人收到一封确认电子邮件。以下代码会上传文件,但会发送电子邮件。请帮忙!

这是.gs

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

var message= ", your abstract was submitted. Send other work by APR 20";
var subject = "Application Received";
MailApp.sendEmail(form.myEmail, subject, message);
 }

function uploadFiles(form) {

try {

var dropbox = "New Abstracts";
var folder, folders = DriveApp.getFoldersByName(dropbox);

if (folders.hasNext()) {
  folder = folders.next();
} else {
  folder = DriveApp.createFolder(dropbox);
}


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

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

return "File uploaded successfully " + file.getUrl();

} catch (error) {

return error.toString();
  }
}

这里是 .html 部分

<form id="myForm">
<input type="text" name="myName" placeholder="Your name..">
<input type="email" name="myEmail" placeholder ="Your email..">
<input type="file" name="myFile1" >
<input type="file" name="myFile2" >
<input type="submit" value="Upload File" 
       onclick="this.value='Uploading..';
                google.script.run.withSuccessHandler(fileUploaded)
                .uploadFiles(this.parentNode).sendEmails(this.parentNode);
                return false;">

<script>
function fileUploaded(status) {
    document.getElementById('myForm').style.display = 'none';
    document.getElementById('output').innerHTML = status;
}
</script>

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

我根据在以下位置找到的代码进行了尝试: http://www.labnol.org/internet/receive-files-in-google-drive/19697/

【问题讨论】:

    标签: email google-apps-script drive


    【解决方案1】:

    您不能像这样将多个调用附加到脚本:

    google.script.run.withSuccessHandler(fileUploaded)
                    .uploadFiles(this.parentNode).sendEmails(this.parentNode);
    

    只有uploadFiles(第一个被调用的)被执行。之后的一切都被忽略了。

    您可以将 sendEmails() 中的代码添加到 uploadFiles() 作为一种解决方案吗?或者将其添加到成功处理程序中?或者在完成后让 uploadFiles() 调用 sendEmails()...

    【讨论】:

    • 谢谢,珍。我已经能够使用当前代码成功添加多个文件并且都被上传了。
    • 谢谢,珍。我已经能够使用当前代码成功添加多个文件。我对其进行了测试,并上传了展位文件。我只是无法触发确认电子邮件。我对编写脚本代码很陌生,所以我不确定你在问什么。你是说我不应该向成功处理程序发送电子邮件吗?如何更正代码以允许发送确认电子邮件?
    • 是的,您的上传工作正常,因为它是 Google.script.run 之后的第一件事 - 您不能在调用中使用两个函数。例如: google.script.run.functionOne().functionTwo() 只运行函数一,而不运行二。 google.script.run.functionTwo().functionOne() 只会运行函数二。您需要在脚本中拆分调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    相关资源
    最近更新 更多