【问题标题】:error submit form google apps script bad value错误提交表单谷歌应用脚​​本错误值
【发布时间】:2016-04-29 14:16:33
【问题描述】:

我有一个提交表单的应用程序。我确信我的代码没问题,但是当我执行应用程序时,我遇到了这个错误: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;
}

感谢您的帮助。

【问题讨论】:

  • newSp 是在哪里定义的?
  • 这是我的新提交函数,但我仍然有同样的错误,ps:我有另一个函数 doGet,我在其中编写表单函数 onSubmitForm(e) { var Myapp = UiApp .getActiveApplication(); var sheet =SpreadsheetApp.openById('0Ar2BlsmmO4nZdHN6WXp2akx1QWUzX3lKX19rYzUyRVE&usp').getActiveSheet(); var lastRow = 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);返回我的应用程序; }
  • 请使用正确的代码编辑您的帖子,而不是评论...不太可读。
  • 没问题,这只是提高您获得适当帮助机会的提示。也就是说,恐怕您显示的代码不是您真实代码的精确副本...... e 定义在哪里?你能展示 doGet 吗?为什么叫“onSubmitForm”???通常应该是 doGet / doPost ......我真的不明白你是如何让它工作的。
  • 我会把这两个函数放上来,大家可能会更清楚

标签: google-apps-script


【解决方案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 和处理程序...会简化脚本? 另外,考虑在处理函数中添加一些东西来告诉用户他的表单已经提交,否则他们会无限期地点击它;-)

【讨论】:

  • 感谢您的帮助实际上错误是电子表格的 ID 我不知道我是如何在电子表格的键中添加“&usp”的,现在一切正常,请考虑您的建议关于使用 doPost ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-17
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多