用于上传文件的Google脚本无法运行 [英] Google Script for Uploading File Not Working

查看:171
本文介绍了用于上传文件的Google脚本无法运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我编写了一个脚本,使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆