错误提交表单谷歌应用程序脚本坏的价值

时间:2013-11-14 11:08:39

标签: google-apps-script

我有一个提交表单的应用程序。我确信我的代码很好,但是当我执行应用程序时遇到了这个错误:error encountered script bad value

以下是我的两个功能:doGet写表单,onSumbit将表单提交到电子表格中

function doGet()
{
var Myapp= UiApp.createApplication();
var panel=Myapp.createAbsolutePanel().setStyleAttributes({'position':'fixed',
                                                        'top':'15%',
                                                        'left':'2%',
                                                        'height':'300',
                                                        'width':'500',});
var NameLabel=Myapp.createLabel().setText('Name');
var NameTb=Myapp.createTextBox().setId('Nameid').setName('Name');
var LastNameLabel=Myapp.createLabel().setText('Last name');
var LastNameTb=Myapp.createTextBox().setId('Lastnameid').setName('LastName');
var emailLABEL=Myapp.createLabel().setText('Email');
var emailtb=Myapp.createTextBox().setName('Email');
var serverHandler=Myapp.createServerHandler('onSubmitForm');
var ButtonSubmit=Myapp.createButton('submit',serverHandler);
   serverHandler.addCallbackElement(NameTb).addCallbackElement(LastNameTb).addCallbackElement(emailtb);
var panelButton =Myapp.createFlowPanel().setStyleAttributes({'position': 'fixed', 
                                                           'border' : '2px solid black',
                                                           'top' : '80%',
                                                           'left' : '70%',
                                                           'width' : '55', 
                                                           'height':'30'}); 

Myapp.add(panel);
Myapp.add(panelButton);
panel.add(NameLabel);
panel.add(NameTb);
panel.add(LastNameLabel);
panel.add(LastNameTb);
panel.add(emailLABEL);
panel.add(emailtb);
panelButton.add(ButtonSubmit);

return Myapp;
}
function onSubmitForm(e)
{
var Myapp = UiApp.getActiveApplication();

var sheet     =SpreadsheetApp.openById('0Ar2BlsmmO4nZdHN6WXp2akx1QWUzX3lKX19rYzUyRVE&usp').getActiveSheet();

var numRows = sheet.getLastRow(); 

sheet.getRange("A"+lastRow).setValue(e.parameter.Name);
sheet.getRange("B"+lastRow).setValue(e.parameter.LastName);
sheet.getRange("C"+lastRow).setValue(e.parameter.Email);

return Myapp;
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

该错误似乎来自spreadSheetApp来电,此ID是否存在且您是否可以编辑对其的访问权限?

另一点:请勿在该上下文中使用getActiveSheet(),因为没有电子表格打开,因此没有活动工作表....请改用getSheetByName()

最后一点:你使用的是不存在的变量lastRow ....你定义了numRows,好好利用它! (但添加+1以外,每次提交时都会覆盖最后一行。

这是替换代码:(我为我的测试使用了另一个ID,修改了值并对其进行了检查)

var sheet = SpreadsheetApp.openById('0AnqSFd3iikE3dGFpMm1IMHo5OGZteUZSTEV6NnRUT2c').getSheetByName('Sheet1');

var numRows = sheet.getLastRow()+1; 

sheet.getRange("A"+numRows).setValue(e.parameter.Name);
sheet.getRange("B"+numRows).setValue(e.parameter.LastName);
sheet.getRange("C"+numRows).setValue(e.parameter.Email);

最后,为什么不使用更常见的doGet / doPost结构,它会简化脚本,因为它不需要callbackElement和handler ...? 另外,考虑在处理程序函数中添加一些东西来告诉用户他的表单已经提交,否则他们将无限期地点击它;-)