我想知道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云端硬盘存在很多问题。
这个问题对于你卡住的东西很模糊。好的问题包括可以重现问题的具体问题和示例代码。但是,通过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
http://stackoverflow.com/a/28161468/280562 – MBoros 2015-05-12 09:31:27