2015-03-13 2 views
1

Я написал сценарий для загрузки файлов на свой Google Диск с помощью скрипта Google. Я развернул его как WebApp, но он не работает, и я не знаю, почему. Кнопка просто застревает в «Subiendo ...» и никогда ничего не меняет внутри моего Диска. Я уверен, что я дал сценарию все разрешения, и я уже пытался понять, что происходит сам по себе, без каких-либо успехов. Можете ли вы помочь мне найти, что мне делать? Я разместить код здесь:Скрипт Google для загрузки файла не работает

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 любую помощь или указатели вы можете дать мне. Большое спасибо!

ответ

1

Похоже, что в настоящий момент существует проблема с Google. Я нашел возможным исправление:

Изменить свой входной тег к этому:

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

0

В настоящее время проблема с doc должна быть исправлена ​​с помощью Google при использовании SandBoxMode=IFRAME. См. here. Я протестировал его, заменив IFRAME на NATIVE. Вы можете просто сделать это:

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

Google превратил ANTIVE для SandBoxMode. Теперь он установлен только для IFRAME. См. here

Смежные вопросы