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

相關問題