Я хочу создать CMS для электронных таблиц, то есть для чтения / записи данных из Firebase и наоборот.Я достиг точки, когда мне нужно загружать файлы непосредственно из электронной таблицы, а не с любой другой страницы.
Я добавил пользовательское меню с htmlService для вывода шаблона, где пользователь может щелкнуть и загрузить файл, и этофайл должен обрабатываться в скрипте Google, но проблема в том, что я получаю только поддельный путь к файлу "c: /fakepath/avatar.png", а не к BLOB-объекту.
мои файлы в скрипте Google:
upload.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
</head>
<body>
<div>
<div id="progress" ></div>
<input type="file" name="upload" id="file">
<input type="submit" value="Submit" class="action" onclick="form_data()" >
<input type="button" value="Close" onclick="google.script.host.close()" />
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
<script>
function form_data(){
var values = [{
"file":$("#upload").val(),
}];
google.script.run.withSuccessHandler(closeIt).upload(values);
};
function closeIt(){
google.script.host.close()
};
</script>
</body>
</html>
test.gs
function upload(values){
//Display the values submitted from the dialog box in the Logger.
Logger.log(values); // here I'm getting file = c/fakepath/avatar.png while I
//need the file to send it as a post request or save it in google drive
};
Я считаю, что должен использовать FileReader, но я попытался и потерпел неудачу:
var file,
reader = new FileReader();
// Upload the file to Google Drive
reader.onloadend = function(e) {
google.script.run
.upload(
e.target.result, file.name
);
};
function form_data(){
reader.readAsDataURL(file);
}