1

我想用Google应用程序脚本一次将多个文件上传到Google云端硬盘。 我已经创建了一个包含upload.html页面 -如何使用Google应用脚本一次将多个文件上传到Google云端硬盘?

<input type="file" name="myFile" id="file-select" multiple/> 

但我需要在JavaScript部分要么改变更多的东西,我还是不知道要改变什么,我还没有找到一个有关文档问题。

我需要在'Code.gs'文件中分别处理每个文件。

例如:

在.GS文件我

var file = form.myFile; 

但不幸的是这指的是我上传的,而不是所有的人的第一个文件。 我如何参考他们所有的人?

这个问题仍然相关。 在此先感谢任何人,可以帮助!

+0

这个问题对于你卡住的东西很模糊。好的问题包括可以重现问题的具体问题和示例代码。但是,通过Google apps脚本上传文件的文档可以在https://developers.google.com/apps-script/reference/ui/file-upload上找到,您可能需要Drive SDK文档:https: //developers.google.com/apps-script/advanced/drive。 – HDCerberus 2014-10-19 15:00:30

+0

http://stackoverflow.com/a/28161468/280562 – MBoros 2015-05-12 09:31:27

回答

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标签,然后运行.GS服务器端代码运行JavaScript:

<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脚本将文件保存到Google云端硬盘存在很多问题。

+0

非常感谢您的回答! 我的主要的问题是如何通过每个文件创建一个循环, i。在HTML文件得到这个 - 和.gs - var file = form.myFile; 不幸的是,这是指我上传的第一个文件,而不是所有的文件。我找不到一种方法来引用所有上传的文件。那是我的主要问题。 – 2014-10-20 06:40:00

+0

也许Caja不会允许INPUT元素中的多个文件属性。 [Google Caja Developers](https://developers.google.com/caja/)另:[Caja Playground](http://caja.appspot.com/) – 2014-10-20 18:20:14

相关问题