Google apps script 以Google格式上载文件-意外错误

Google apps script 以Google格式上载文件-意外错误,google-apps-script,google-sheets,google-forms,Google Apps Script,Google Sheets,Google Forms,我从链接复制了此模板并对其进行了编辑。但是,在我单击“提交”并显示以下消息之前,一切都正常工作:遇到错误-发生意外错误 我检查了执行记录,问题是: var targetRange = sheet.getRange(lastRow+1, 1, 1, 1).setValues([[Name,Nationality,EmailAddress,DonationAmount]]); 我是个脚本新手,有人能检查我的脚本吗?非常感谢。 另外,如果可能的话,我想在我的脚本中再添加2个文件上传,但它不起作用

我从链接复制了此模板并对其进行了编辑。但是,在我单击“提交”并显示以下消息之前,一切都正常工作:遇到错误-发生意外错误

我检查了执行记录,问题是:

 var targetRange = sheet.getRange(lastRow+1, 1, 1, 1).setValues([[Name,Nationality,EmailAddress,DonationAmount]]);
我是个脚本新手,有人能检查我的脚本吗?非常感谢。 另外,如果可能的话,我想在我的脚本中再添加2个文件上传,但它不起作用

// Script-as-app template.
var submissionSSKey = '1nqvlVHIi_HQOBRIoyIhoo4u0ok-g4mzssrHeEIIz99g';

function doGet(e) {
var app = UiApp.createApplication().setTitle('HowIMetMyself Registration');
var panel = app.createFormPanel();
var grid = app.createGrid(8,2).setId('registrationGrid');
var nameLabel = app.createLabel('Name');
var nameTextbox = app.createTextBox().setWidth('150px').setName('name');
var nationalityLabel = app.createLabel("Nationality");
var nationalityTextbox = app.createTextBox().setWidth('150px').setName('nationality');
var emailaddressLabel = app.createLabel('Email Address');
var emailaddressTextbox = app.createTextBox().setWidth('150px').setName('email address');
var donationamountLabel = app.createLabel('Donation Amount');
var donationamountTextbox = app.createTextBox().setWidth('150px').setName('donation amount');
var submitButton = app.createSubmitButton('<B>Submit</B>'); 
var warning = app.createHTML('<B>PLEASE WAIT WHILE DATA IS UPLOADING<B>').setStyleAttribute('background','yellow').setVisible(false)
//file upload
var upLoadTypeLabel = app.createLabel('File Upload');
var upLoad = (app.createFileUpload().setName('thefile'));
//file upload
var upLoadTypeLabel = app.createLabel('File Upload');
var upLoad = (app.createFileUpload().setName('thefile'));
//file upload
var upLoadTypeLabel = app.createLabel('File Upload');
var upLoad = (app.createFileUpload().setName('thefile'));

//Grid layout of items on form
grid.setWidget(0, 0, nameLabel)
    .setWidget(0, 1, nameTextbox)
    .setWidget(1, 0, nationalityLabel)
    .setWidget(1, 1, nationalityTextbox)
    .setWidget(2, 0, emailaddressLabel)
    .setWidget(2, 1, emailaddressTextbox)
    .setWidget(3, 0, donationamountLabel)
    .setWidget(3, 1, donationamountTextbox)
    .setWidget(4, 0, upLoadTypeLabel)
    .setWidget(4, 1, upLoad)
    .setWidget(5, 0, upLoadTypeLabel)
    .setWidget(5, 1, upLoad)
    .setWidget(6, 0, upLoadTypeLabel)
    .setWidget(6, 1, upLoad)
    .setWidget(7, 0, submitButton)
    .setWidget(7, 1, warning)


var cliHandler = app.createClientHandler().forTargets(warning).setVisible(true)
submitButton.addClickHandler(cliHandler);  
panel.add(grid);
app.add(panel);
return app;}

 function doPost(e) {
var app = UiApp.getActiveApplication();  
var Name = e.parameter.Name;
var Nationality = e.parameter.Nationality;
var EmailAddress = e.parameter.emailaddress;
var DonationAmount = e.parameter.donationamount;
  //app.getElementById('info').setVisible(true).setStyleAttribute('color','red');

var sheet = SpreadsheetApp.openById(submissionSSKey).getActiveSheet();
var lastRow = sheet.getLastRow();
var targetRange = sheet.getRange(lastRow+1, 1, 1, 4).setValues([[Name,Nationality,EmailAddress,DonationAmount]]);
 // data returned is a blob for FileUpload widget
 var fileBlob = e.parameter.thefile;
 var doc = DocsList.createFile(fileBlob);
 return app}
您需要将DocList Api更新为DriveApp Api

doGete中的setname{value}参数必须与doPoste中的e.parameter.{value}匹配

像这样

在多吉特

在多波斯特

对于创建3文件上传的最后一步,您需要对每个上传方法使用唯一的值,例如:setName'thefile1',setName'thefile2',setName'thefile3'

这是修改后的脚本


您将收到var targetRange=sheet.的消息。。在执行记录中,但上述代码中没有此类声明。我将发布完整代码:Thanks@SachinK你现在能帮我看看吗?谢谢:将最后一行DocsList.createFileBlob更改为DriveApp.createFileBlob;它对提交有效,但在我的谷歌电子表格中收到的数据显示为“未定义”。还有什么不对劲吗?谢谢!!!我试过了,但还是出现了这样一条消息:遇到了错误-发生了意外错误;It’好了,我忘了添加提交密钥:非常感谢你的帮助!!!是否有人可以将文件上载到我的驱动器?我让我的朋友试试,但对他不起作用
    var nameTextbox = app.createTextBox().setWidth('150px').setName('Name');
    var nationalityTextbox = app.createTextBox().setWidth('150px').setName('Nationality');
    var emailaddressTextbox = app.createTextBox().setWidth('150px').setName('emailaddress');
    var donationamountTextbox = app.createTextBox().setWidth('150px').setName('donationamount');
var Name = e.parameter.Name;
var Nationality = e.parameter.Nationality;
var EmailAddress = e.parameter.emailaddress;
var DonationAmount = e.parameter.donationamount;
// Script-as-app template.
var submissionSSKey = '<------Spreadsheet Key ------->';

function doGet(e) {
var app = UiApp.createApplication().setTitle('HowIMetMyself Registration');
var panel = app.createFormPanel();
var grid = app.createGrid(8,2).setId('registrationGrid');
var nameLabel = app.createLabel('Name');
var nameTextbox = app.createTextBox().setWidth('150px').setName('Name');
var nationalityLabel = app.createLabel("Nationality");
var nationalityTextbox = app.createTextBox().setWidth('150px').setName('Nationality');
var emailaddressLabel = app.createLabel('Email Address');
var emailaddressTextbox = app.createTextBox().setWidth('150px').setName('emailaddress');
var donationamountLabel = app.createLabel('Donation Amount');
var donationamountTextbox = app.createTextBox().setWidth('150px').setName('donationamount');
var submitButton = app.createSubmitButton('<B>Submit</B>'); 
var warning = app.createHTML('<B>PLEASE WAIT WHILE DATA IS UPLOADING<B>').setStyleAttribute('background','yellow').setVisible(false)
//file upload
var upLoadTypeLabel = app.createLabel('File Upload');
var upLoad1 = (app.createFileUpload().setName('thefile1'));
//file upload
var upLoadTypeLabel = app.createLabel('File Upload');
var upLoad2 = (app.createFileUpload().setName('thefile2'));
//file upload
var upLoadTypeLabel = app.createLabel('File Upload');
var upLoad3 = (app.createFileUpload().setName('thefile3'));

//Grid layout of items on form
grid.setWidget(0, 0, nameLabel)
    .setWidget(0, 1, nameTextbox)
    .setWidget(1, 0, nationalityLabel)
    .setWidget(1, 1, nationalityTextbox)
    .setWidget(2, 0, emailaddressLabel)
    .setWidget(2, 1, emailaddressTextbox)
    .setWidget(3, 0, donationamountLabel)
    .setWidget(3, 1, donationamountTextbox)
    .setWidget(4, 0, upLoadTypeLabel)
    .setWidget(4, 1, upLoad1)
    .setWidget(5, 0, upLoadTypeLabel)
    .setWidget(5, 1, upLoad2)
    .setWidget(6, 0, upLoadTypeLabel)
    .setWidget(6, 1, upLoad3)
    .setWidget(7, 0, submitButton)
    .setWidget(7, 1, warning)


var cliHandler = app.createClientHandler().forTargets(warning).setVisible(true)
submitButton.addClickHandler(cliHandler);  
panel.add(grid);
app.add(panel);
return app;}

 function doPost(e) {
var app = UiApp.getActiveApplication();  
var Name = e.parameter.Name;
var Nationality = e.parameter.Nationality;
var EmailAddress = e.parameter.emailaddress;
var DonationAmount = e.parameter.donationamount;
  //app.getElementById('info').setVisible(true).setStyleAttribute('color','red');

var sheet = SpreadsheetApp.openById(submissionSSKey).getActiveSheet();
var lastRow = sheet.getLastRow();
var targetRange = sheet.getRange(lastRow+1, 1, 1, 4).setValues([[Name,Nationality,EmailAddress,DonationAmount]]);
 // data returned is a blob for FileUpload widget
 var fileBlob1 = e.parameter.thefile1;
 var fileBlob2 = e.parameter.thefile2;
 var fileBlob3 = e.parameter.thefile3;
 var doc1 = DriveApp.createFile(fileBlob1);
 var doc2 = DriveApp.createFile(fileBlob2);
 var doc3 = DriveApp.createFile(fileBlob3);
 return app
 }