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>
スクリプトは、私は、スプレッドシートの所有者でないんだけど、私が持っているスプレッドシートにバインドされています編集権限。私はユーザ(所有者ではない)からスクリプトを実行しています。
オーナーだけがファイルをアップロードできるようにしていますか?何故ですか?