用于上传文件的Google脚本无法运行 [英] Google Script for Uploading File Not Working
问题描述
我编写了一个脚本,使用Google脚本将文件上传到我的Google云端硬盘。我把它部署为一个WebApp,但它不工作,我不知道为什么。该按钮只是卡在Subiendo ...,并不会改变我的驱动器内的任何东西。我确定我已经给了脚本所有的权限,而且我已经试着看看自己发生了什么,没有任何成功。你能帮我找到我该怎么办?我在这里发布代码:
Code.gs
function doGet(){
return HtmlService.createHtmlOutputFromFile('main')。setSandboxMode(HtmlService.SandboxMode.IFRAME);
函数serverFunc(theForm){
尝试{
var folder_name =publicaciones;
var文件夹,文件夹= 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());
returnArchivo subido exitosamente:+ file.getUrl();
} catch(error){
Logger.log(error:,error.toString());
return error.toString();
$ b main.html ** < div>
< form id =myForm>
< input type =filename =theFile>
< input type =hiddenname =anExample>
< br>
< input type =buttonvalue =Subir Archivoonclick =this.value ='Subiendo ...';
google.script.run.withSuccessHandler(fileUploaded).serverFunc .parentNode);
return false;>
< / form>
< / div>
< div id =output>
< / div>
< script>
函数fileUploaded(status){
document.getElementById('myForm')。style.display ='none';
document.getElementById('output')。innerHTML = status;
}
< / script>
我会请教您可以给我的任何帮助或指示。非常感谢!
解决方案看起来目前Google正在处理一个错误。我找到了一个可能的解决方法:
将您的输入标签更改为:
< input type =buttonvalue =Subir Archivoonclick =callServerCode()/>
将函数添加到< script>
标签:
< script>
函数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>
请注意,在新函数中,它使用 var formToSend = document.getElementById('myForm');
将IFRAME更改为NATIVE。
I wrote a script for uploading files to my Google Drive using the Google Script. I deployed it as a WebApp but it's not working and I don't know why. The button just gets stuck on "Subiendo..." and never changes anything inside my Drive. I'm sure I gave the script all the permissions and I already tried to see what's happening on my own without any sucess. Can you maybe help me find what should I do? I post the code here:
Code.gs
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>
I'd appreaciate any help or pointers you can give me. Thanks a lot!
解决方案 Looks like there is a bug currently that Google is working on. I found a possible fix:
Change your input tag to this:
<input type="button" value="Subir Archivo" onclick="callServerCode()"/>
Add a function to the <script>
tag:
<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>
Note that inside the new function, it gets the form using var formToSend = document.getElementById('myForm');
And change IFRAME to NATIVE.
这篇关于用于上传文件的Google脚本无法运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!