2017-05-20 6 views
0

私はGoogle Apps Scriptを使用しています。匿名ユーザーがGoogleドライブにファイルをアップロードする

<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    </head> 
    <body> 
    <h1 id="main-heading">Main Heading</h1> 
    <br/> 
    <div id="formDiv"> 
     <form id="myForm"> 
     <input name="picToLoad" type="file" /><br/> 
     <input type="button" value="Submit" onclick="picUploadJs(this.parentNode)" /> 
     </form> 
    </div> 
    <div id="status" style="display: none"> 
    Uploading. Please wait... 
</div> 

</body> 
<script> 
    function picUploadJs(frmData) { 
    document.getElementById('status').style.display = 'inline'; 
    google.script.run 
     .withSuccessHandler(updateOutput) 
     .uploadFile(frmData) 
    }; 

    function updateOutput() { 
    var outputDiv = document.getElementById('status'); 
    outputDiv.innerHTML = "The File was UPLOADED!"; 
    } 
</script> 
</html> 

form.html

Code.gs

function doGet(e) { 
    return HtmlService.createHtmlOutputFromFile('form.html').setSandboxMode(HtmlService.SandboxMode.IFRAME); 
} 

function uploadFile(form) { 
    var folderId = "folder_id"; 

    try { 

    var folder = DriveApp.getFolderById(folderId); 

    var blob = form.picToLoad; 
    var file = folder.createFile(blob); 

    return "File uploaded successfully " + file.getUrl(); 

    } catch (error) { 
    Logger.log(error); 

    return error.toString(); 
    } 
} 

私は(私はG Suiteを使用)自分のドメイン内で認証していたときにそれはすべて正常に動作します。

しかし、別のユーザー(通常のGmailユーザーなど)としてGoogleにログインしている、または全くログオンしていない場合でも、そのページにアクセスできますが、スクリプトは次のエラーで正常に実行されません。コンソール:

エラー

google.script.run.withSuccessHandler(...).processForm is not a function 
    at picUploadJs (VM84 userCodeAppPanel:9) 
    at HTMLInputElement.onclick (VM104 userCodeAppPanel:1) 

追加のログは、Appsスクリプトのレベルでログに表示されません。

としてアプリを実行します:アプリにアクセスすることができミー(と、それを許可)

誰でも、でも匿名

を、私は、スクリプトを展開している

だから、私はすべてうまくいくはずだと誰も私のドライブにファイルをアップロードすることができるはずだと思います。残念ながらそうではありません。

これもまた、ドメイン外からスクリプトにアクセスした場合にのみ発生します。

何が間違っているのを見ることができますか?

+1

odd。公開設定は問題ありません。スクリプトコピーを試してみてください。 –

+0

申し訳ありませんが、私はあなたがスクリプトコピーによって何を意味するか分かりません。 – 4ndr23j

+1

スクリプトのコピーを作成し、そのコピーを公開してください。 –

答えて

1

Zig Mandelのコメントで提案されたように、スクリプトのコピーを作成して実行して問題を解決しました。これは認可のプロセスを再開したため、おそらく権限で間違って初期化された何かがありました。

関連する問題