私は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スクリプトのレベルでログに表示されません。
を、私は、スクリプトを展開しているとしてアプリを実行します:アプリにアクセスすることができミー(と、それを許可)
:誰でも、でも匿名
だから、私はすべてうまくいくはずだと誰も私のドライブにファイルをアップロードすることができるはずだと思います。残念ながらそうではありません。
これもまた、ドメイン外からスクリプトにアクセスした場合にのみ発生します。
何が間違っているのを見ることができますか?
odd。公開設定は問題ありません。スクリプトコピーを試してみてください。 –
申し訳ありませんが、私はあなたがスクリプトコピーによって何を意味するか分かりません。 – 4ndr23j
スクリプトのコピーを作成し、そのコピーを公開してください。 –