2017-04-02 4 views
0

私はファイルをアップロードするためのフォームを開き、アップロードされたファイルを処理するサーバー側の関数を呼び出すGoogleスプレッド用のスクリプトを作成しています。私が持っている問題は、サーバー側の関数が呼び出されず、操作を実行する権限がないというエラーメッセージが表示されたエラーハンドラが呼び出されるということです。 フォームを渡すのではなく、サーバー側の関数をnull引数で呼び出すと、関数が正常に呼び出されます。スプレッドシートにファイルをアップロードするには特別な権限が必要です

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で試してみましたが、うまくいきます。

関連する問題