2017-04-02 87 views
0

我正在爲Google表格編寫一個腳本,該腳本打開上傳文件的窗體,並調用服務器端函數來處理上載的文件。我遇到的問題是服務器端函數沒有被調用,並且調用失敗處理程序時出現錯誤消息,說我沒有權限執行該操作。 如果我用空參數調用服務器端函數而不是傳入表單,那麼函數會成功調用。將文件上傳到電子表格需要特殊權限

這裏是腳本我有:

function onOpen() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var csvMenuEntries = [{name: "Process bank statement file", functionName: "openUploadPaymentsDialog"}]; 
    ss.addMenu("AG_Menu", csvMenuEntries); 
} 

function openUploadPaymentsDialog(e) { 
    var html = HtmlService.createHtmlOutputFromFile('UploadPaymentsDialog'); 
    SpreadsheetApp.getUi().showModalDialog(html, 'Upload .NDA file'); 
    Logger.log('dialog opened'); 
} 

function handleFileUpload(theForm) { 
    Logger.log('file uploaded');  
} 

和HTML表單:

<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    </head> 
    <body> 
    <form> 
     <input type="file" name="theFile"/><br/><br/> 
     <input type="button" value="Submit" onclick="onSubmit(this.parentNode);"/> 
    </form> 
    <div id="output"/> 
    <script> 
     function onSubmit(theForm) { 
     google.script.run 
       .withSuccessHandler(onSuccess) 
       .withFailureHandler(onFailure) 
       .handleFileUpload(theForm); 
//if I call handleFileUpload with null as argument then call succeeds 
     } 

     function onFailure(error){ 
     var div = document.getElementById('output'); 
     div.innerHTML = "ERROR: " + error.message; 
     } 

     function onSuccess(f){ 
     google.script.host.close(); 
     } 
    </script> 

    </body> 
</html> 

腳本綁定到電子表格,我不是電子表格的所有者,但我有權限編輯。我從我的用戶(不是所有者)運行腳本。

這是隻有所有者可以上傳文件嗎?這是爲什麼?

回答

0

我發現它可能是我使用的瀏覽器的一些問題。它是Debian Linux下的Google Chromium。我剛剛嘗試過使用Firefox,它的工作正常。