如何在应用程序脚本中使用HTML服务对话框从本地上传文件到驱动器?



尝试使用自定义HTML对话框从本地上传文件到google drive。

在对话框中点击上传,它等待几秒钟,然后显示一个错误:

"failed upload我们很抱歉,服务器发生错误。请稍候再试。">

它只是没有运行服务器端功能。我试过改变服务器端功能只是为了返回任何东西,它只是不工作,所以我不认为这是服务器端功能本身的问题。关于客户端和服务器之间的通信。

你知道为什么这不起作用吗?

// Use this code for Google Docs, Slides, Forms, or Sheets.
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.createMenu('Dialog')
.addItem('Upload', 'uploadDialog')
.addToUi();
}
function uploadDialog() {
var html = HtmlService.createHtmlOutputFromFile('Index');
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.showModalDialog(html, 'Upload File Here');
}

function uploadFile(frmdata) {
var fileBlob = frmdata.fileToUpload
if (fileBlob.getName() != "") {
var fldrSssn = DriveApp.getFolderById("1nFl9S3pgR9IXSKVuKh9sUGOKi5adEHR1");
var picFile = fldrSssn.createFile(fileBlob);
}
}
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<form id="fileform" onsubmit="event.preventDefault()">
<input type="file" id="file" name="fileToUpload">
<input type="Button" value="Upload" onclick="uploadthis(this.parentNode)">
</form>
</body>
<script>
function uploadthis(frmData) {
google.script.run
.withSuccessHandler(closeDialog)
.withFailureHandler(alertFailure)
.uploadFile(frmData);
}
function closeDialog() {
google.script.host.close()
}
function alertFailure(error) {
google.script.host.close()
alert("failed Upload" + error.message)
}
</script>
</html>

此行为是V8运行时的已知问题。链接在这里:https://issuetracker.google.com/150675170。你可以点击星形图标来表示你也受到了影响。

最新更新