File upload 用于上载文件的Google脚本不起作用
我使用谷歌脚本编写了一个脚本,用于将文件上传到我的谷歌硬盘。我将它部署为一个网络应用程序,但它不工作,我不知道为什么。按钮卡在“Subiendo…”上,永远不会改变我驱动器中的任何内容。我确信我给了脚本所有的权限,并且我已经试着自己看看发生了什么,但没有成功。你能帮我找到我该做什么吗?我在这里发布代码: 代码.gsFile upload 用于上载文件的Google脚本不起作用,file-upload,google-apps-script,File Upload,Google Apps Script,我使用谷歌脚本编写了一个脚本,用于将文件上传到我的谷歌硬盘。我将它部署为一个网络应用程序,但它不工作,我不知道为什么。按钮卡在“Subiendo…”上,永远不会改变我驱动器中的任何内容。我确信我给了脚本所有的权限,并且我已经试着自己看看发生了什么,但没有成功。你能帮我找到我该做什么吗?我在这里发布代码: 代码.gs function doGet() { return HtmlService.createHtmlOutputFromFile('main').setSandboxMod
function doGet() {
return HtmlService.createHtmlOutputFromFile('main').setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
function serverFunc(theForm) {
try{
var folder_name = "publicaciones";
var folder,folders = DriveApp.getFoldersByName(folder_name);
if(folders.hasNext()){
folder = folders.next();
}else{
folder = DriveApp.createFolder(folder_name);
}
Logger.log("TheForm", theForm == null);
var blob = theForm.theFile;
Logger.log("Blob!", blob == null);
var file = folder.createFile(blob);
Logger.log("File:", file.getName());
return "Archivo subido exitosamente: " + file.getUrl();
} catch(error){
Logger.log("error: ", error.toString());
return error.toString();
}
}
**main.html**
<div>
<form id="myForm">
<input type="file" name="theFile">
<input type="hidden" name="anExample">
<br>
<input type="button" value="Subir Archivo" onclick="this.value='Subiendo...';
google.script.run.withSuccessHandler(fileUploaded).serverFunc(this.parentNode);
return false;">
</form>
</div>
<div id="output">
</div>
<script>
function fileUploaded(status) {
document.getElementById('myForm').style.display = 'none';
document.getElementById('output').innerHTML = status;
}
</script>
功能文件上传(状态){
document.getElementById('myForm').style.display='none';
document.getElementById('output')。innerHTML=status;
}
如果你能给我任何帮助或指点,我都会报答的。非常感谢 当当前使用
SandBoxMode=IFRAME
时,这是一个文档问题,需要与谷歌一起解决。看见我已经通过将IFRAME交换为NATIVE测试了它的工作原理。您只需执行以下操作:
function doGet() {
return HtmlService.createHtmlOutputFromFile('main');
}
看起来谷歌目前正在处理一个bug。我找到了一个可能的解决方案: 将输入标记更改为:
<input type="button" value="Subir Archivo" onclick="callServerCode()"/>
将函数添加到
标记:
<script>
function callServerCode() {
var formToSend = document.getElementById('myForm');
google.script.run
.withSuccessHandler(fileUploaded)
.serverFunc(formToSend);
};
function fileUploaded(status) {
document.getElementById('myForm').style.display = 'none';
document.getElementById('output').innerHTML = status;
}
</script>
函数callServerCode(){
var formToSend=document.getElementById('myForm');
google.script.run
.withSuccessHandler(已上载文件)
.serverFunc(formToSend);
};
功能文件上传(状态){
document.getElementById('myForm').style.display='none';
document.getElementById('output')。innerHTML=status;
}
注意,在新函数中,它使用var formToSend=document.getElementById('myForm')获取表单代码>
并将IFRAME改为NATIVE。谷歌已将NATIVE改为SandBoxMode。它现在设置为仅IFRAME。
看