2013-03-27 4 views
4

Как загрузить файлы на Google Drive? Я хочу создать веб-приложение, используя скрипт приложения Google - htmlservice. Я не знаю, как указать форму в html на существующий скрипт приложения Google. Мне трудно найти правильный пример в документации Google.Загрузка файла с использованием скрипта Google Apps с использованием HtmlService

Я нашел сотни примеров, используя пользовательский интерфейс, но в соответствии с https://developers.google.com/apps-script/sunset он будет устаревшим в ближайшее время. Спасибо заранее! Януш

<html> 
<body> 
<form> 
    <input type="file"/> 
    <input type="button"> 
</form> 
</body> 
</html> 

Script

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

function fileUploadTest() 
{ 
    var fileBlob = e.parameter.upload; 
     var adoc = DocsList.createFile(fileBlob); 
     return adoc.getUrl(); 
} 
+0

GUI строитель будет устаревшим (и несколько виджетов в UiApp), но не сам UiApp ... –

+0

Обратите внимание, что остальная часть UiApp не устарела и будет продолжать функционировать. Тем не менее, мы рекомендуем вам перенести ваши пользовательские интерфейсы в Html Service, которая предложит наилучшую комбинацию функций и поддержки в долгосрочной перспективе. –

ответ

11

Имейте кнопку запустить функцию на стороне сервера, используя google.script.run, передавая всю форму в качестве единственного параметра. (Внутри кнопки onClick, это «кнопка», поэтому «this.parentNode» - это форма.) Обязательно укажите имя файла.

<html> 
<body> 
<form> 
    <input type="file" name="theFile"> 
    <input type="hidden" name="anExample"> 
    <input type="button" onclick="google.script.run.serverFunc(this.parentNode)"> 
</form> 
</body> 
</html> 

На сервере у вас есть функция обработки формы принять один параметр - сама форма. Форма HTML из клиентского кода будет преобразована в эквивалентный объект JavaScript, где все именованные поля являются строковыми свойствами, за исключением файлов, которые будут капли.

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

function serverFunc(theForm) { 
    var anExampleText = theForm.anExample; // This is a string 
    var fileBlob = theForm.theFile;   // This is a Blob. 
    var adoc = DocsList.createFile(fileBlob);  
    return adoc.getUrl(); 
} 

Если вы действительно хотите использовать этот URL вы генерирующий и возвращающийся, убедитесь, чтобы добавить обработчик успеха в google.script вызова. Вы можете изменить его следующим образом:

// Defined somewhere before the form 
function handler(url) { 
    // Do something with the url. 
} 

<input type="button" onclick= 
    "google.script.run.withSuccessHandler(handler).serverFunc(this.parentNode)"> 
0

попробовать:. Вернуться HtmlService.createTemplateFromFile ('MYPAGE') оценки(); Подробнее: html service reference

+0

Как это связано с загрузкой файла ??? –

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