Google apps script 从我的表单在谷歌表单中保存信息
我尝试将文件保存在谷歌硬盘上,并将信息保存在谷歌工作表中。但是表单中的信息就像Java.object 下面是它在Google apps script 从我的表单在谷歌表单中保存信息,google-apps-script,google-sheets,web-applications,Google Apps Script,Google Sheets,Web Applications,我尝试将文件保存在谷歌硬盘上,并将信息保存在谷歌工作表中。但是表单中的信息就像Java.object 下面是它在code.gs中的样子: var FOLDER_ID = '1jxBwrsz0JdBHcADpUUMespe'; var SHEET_ID = '1oJcKQ2RrtxxE1mn_CP-UAHefDxV7zg4'; function doPost(e) { var data = Utilities.base64Decode(e.parameters.data); va
code.gs中的样子:
var FOLDER_ID = '1jxBwrsz0JdBHcADpUUMespe';
var SHEET_ID = '1oJcKQ2RrtxxE1mn_CP-UAHefDxV7zg4';
function doPost(e) {
var data = Utilities.base64Decode(e.parameters.data);
var blob = Utilities.newBlob(data, e.parameters.mimetype, e.parameters.name);
var folder = DriveApp.getFolderById(FOLDER_ID);
var file = folder.createFile(blob);
folder.createFolder(name)
var res = [];
SpreadsheetApp.openById(SHEET_ID).getSheets()[0].appendRow([e.parameters.name, file.getUrl()].concat(res));
return ContentService.createTextOutput("Done.")
}
下面是它在HTML
文件中的外观:
<form action="https://script.google.com/macros/s/AKfycbxkzg6ud1VyTI2W4gs-CRJRS3i3qLDXQIGevtyy/exec" id="form" method="post">
<div id="data"></div>
<div class="form-group">
<label for="name">Имя</label>
<input type="text" id='name' name="name" placeholder="Имя" />
</div>
<div class="form-group">
<label for="comment">Комм</label>
<input type="text" name="comment" placeholder="Комментарий" />
</div>
<input name="file" id="uploadfile" type="file">
<input id="submit" type="submit">
</form>
<script>
$('#uploadfile').on("change", function() {
var file = this.files[0];
var fr = new FileReader();
var name = $('#name').value;
fr.fileName = file.name
fr.onload = function(e) {
e.target.result
html = '<input type="hidden" name="data" value="' + e.target.result.replace(/^.*,/, '') + '" >';
html += '<input type="hidden" name="mimetype" value="' + e.target.result.match(/^.*(?=;)/)[0] + '" >';
html += '<input type="hidden" name="filename" value="' + e.target.fileName + '" >';
html += '<input type="hidden" name="name" value="' + name + '" >';
$("#data").empty().append(html);
}
fr.readAsDataURL(file);
});
</script>
Имя
Комм
$('#uploadfile')。在(“change”,function()上{
var file=this.files[0];
var fr=new FileReader();
变量名称=$('#名称')。值;
fr.fileName=file.name
fr.onload=功能(e){
e、 目标、结果
html='';
html+='';
html+='';
html+='';
$(“#数据”).empty().append(html);
}
fr.readAsDataURL(文件);
});
如何以可读的格式获取数据?就我个人而言,我从不使用表单。下面是创建5个文本框的示例。验证您是否将某些内容放入其中,并通过google.script.run将代码返回到服务器进行进一步处理(即Logger.log数据)。我创建html服务器端,并使用JQuery将其加载到on DOM就绪事件中
代码.gs
function buildForm(){
var s='';
for(var i=0;i<5;i++){
s+=Utilities.formatString('<br /><input class="jim" type="text" value="" id="%s" />%s',"txt" + i,"text" + Number(i+1));
}
s+='<br /><input type="button" value="Submit" onClick="getValues();" /><input type="button" value="Close" onClick="google.script.host.close();" />';
return s;
}
function saveValues(A){
for(var i=0;i<A.length;i++){
Logger.log('\nid=%s\nvalue=%s',A[i].id,A[i].value);
}
}
function showFormDialog(){
var ui=HtmlService.createHtmlOutputFromFile('form')
SpreadsheetApp.getUi().showModelessDialog(ui,'My Form');
}
函数buildForm(){
var s='';
对于(var i=0;iError消息应该是文本,而不是图像,以便可以正确搜索。这个问题已经被问过了-您是否使用了concat?搜索示例:可能重复的
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(function(){
google.script.run
.withSuccessHandler(function(html){$('#form').html(html);})
.buildForm();
});
function getValues(){
var elements=document.getElementsByClassName('jim');
var el=[];
console.log('elements.length=%s',elements.length);
for(var i=0;i<elements.length;i++){
var obj={};
obj['id']='txt' + i;
obj['value']=$('#' + 'txt' + i).val();
el.push(obj);
}
var dataValid=true;
for(var i=0;i<el.length;i++){
console.log('id=%s, value=%s',el[i].id, el[i].value);
if(!el[i].value){
dataValid=false;
$('#'+el[i].id).css('background','#ffff00');
}else{
$('#'+el[i].id).css('background','#ffffff');
}
}
if(dataValid){
google.script.run.saveValues(el);
}else{
alert('Invalid Data Found...Try again sucker....');
}
}
console.log('MyCode');
</script>
<style>
input {margin:5px 5px 0 0;}
</style>
</head>
<body>
<div id="form"></div>
</body>
</html>