谷歌的脚本上传文件不工作(Google Script for Uploading File Not

2019-10-22 06:36发布

我写了一个脚本使用谷歌的脚本文件上传到我的谷歌驱动器。 我部署它作为一个Web应用程序,但它不工作,我不知道为什么。 该按钮只是卡上的“Subiendo ......”,也不会改变我的硬盘里的任何东西。 我敢肯定,我给脚本的所有权限,我已经想看看发生了什么事我自己没有任何sucess。 你也许可以帮我看看我该怎么办? 我在这里发布的代码:

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>

我appreaciate任何帮助或指针,你可以给我。 非常感谢!

Answer 1:

貌似当前存在的bug,谷歌正在开发。 我发现了一个可能的解决办法:

您输入的标签改成这样:

<input type="button" value="Subir Archivo" onclick="callServerCode()"/>

将函数添加到<script>标记:

<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>

注意,新的函数内部,它使用获取形式var formToSend = document.getElementById('myForm');

并改变IFRAME为NATIVE。



Answer 2:

这是一个文档问题需要使用时,与谷歌修复SandBoxMode=IFRAME目前。 见这里 。 我测试过它的工作原理是交换IFRAME为NATIVE。 你可以简单地做到这一点:

function doGet() {
    return    HtmlService.createHtmlOutputFromFile('main');
}


Answer 3:

谷歌已经把本土的SandboxMode它。 它现在只能设置为IFRAME。 见这里



文章来源: Google Script for Uploading File Not Working