如何使用Google应用脚本一次将多个文件上传到Google云端硬盘?

时间:2014-10-19 13:48:38

标签: javascript html file-upload google-apps-script google-drive-api

我正在尝试使用Google应用脚本一次将多个文件上传到Google云端硬盘。 我创建了一个包含 -

的upload.html页面
    <input type="file" name="myFile" id="file-select" multiple/>

但是我需要在JavaScript部分更改更多内容,我不知道要改变什么,我也找不到有关该问题的文档。

我需要在&#39; Code.gs&#39;中单独处理每个文件。文件。

例如:

在.gs文件中我得到了

    var file = form.myFile; 

但不幸的是,这是指我上传的第一个文件而不是所有文件。 我如何推荐所有这些?

问题仍然存在。 提前感谢任何有帮助的人!

1 个答案:

答案 0 :(得分:0)

我想知道Caja是否以某种方式不允许输入元素的多文件能力。 Caja是用于HTML的卫生计划。

Google Caja Developers Page

如果您查看此文档:

Mozilla Documentation - File List

您应该能够访问INPUT元素中的所有文件名,并迭代内容。 使用客户端代码而不是Google .gs服务器端代码遍历INPUT元素中的所有文件。

// Get all the files out of the INPUT element
var fileInput = document.getElementById("file-select");
console.log('fileInput: ' + fileInput);

// files is a FileList object (similar to NodeList)
var files = fileInput.files;
console.log('files: ' + files);

但是,我在控制台日志中收到错误消息,文件变量未定义。

HTML <input>标记配置为文件选择器,将文件名放入对象中。对象中的信息需要以某种方式传递给.gs文件。由于文件选择器可以选择多个文件,因此代码需要处理多个文件。您可以一个接一个地上传文件,一次循环遍历所有文件,或以某种方式运行异步代码。 .gs脚本可以在第一个文件完成之前开始上传第二个文件。同时上传多个文件比在上一个文件完成之前等待上传下一个文件更快。

您可以直接从提交按钮运行.gs脚本:

<input type="button" value="Submit"
  onclick="google.script.run.withSuccessHandler(gsFunctionName).processForm(this.parentNode)" />

或者在HTML标记中运行JavaScript,然后运行.gs服务器端代码:

<form onsubmit="fncMyClientSideCode(this)" id="idUploadForm">
  <input>
  <button type="submit" id="btnUpload">Upload Now!</button>
</form>

<script>
  window.fncMyClientSideCode = function(objArgPassed) {
     //my statements here
     google.script.run.withFailureHandler(onUploadFail)
      .withSuccessHandler(onRegSccss)
     .fncUploadFiles(objArgPassed);
  }
</script>

我只是通过几种不同的方式来使用HTML来获取一般信息。您需要对其进行修改以供使用,测试和调试。

那只是一个开始。您需要知道如何访问对象中的信息,编写代码以循环遍历每个文件,将其保存到特定文件夹中。有很多问题涉及使用Apps Script将文件保存到Google云端硬盘。