Google SpreadSheet保存“未定义”值

时间:2012-10-01 20:35:28

标签: google-apps-script google-docs

我的情况是这样的,我正在尝试保存从在GUI Builder上创建的表单中获取的数据或值,这是我第一次使用[链接到谷歌脚本文档] [1]上发布的示例脚本

它工作得很好,我能够获取在表单中键入的值,但是当我决定使用GUI Builder时,我们需要更多的文本字段和内容,它停止工作,每次单击按钮,我的电子表格获得“未定义”值。

我已经检查了所有ID,所有ID都与脚本完全相同。

代码:

_guardar:此函数将文本字段值插入电子表格。 celda意为英语单元格 ultimaFila意味着lastRow

   function doGet(e) {      
   var doc = SpreadsheetApp.openById('0Au-gVDPWE5-bdDhJQzc2N2U4Q2l3LVY2cWpkbHdXMVE'); 
   var app = UiApp.createApplication();      
   app.add(app.loadComponent("MyForm"));
   return app;
 }  


function _guardar(e){
  var app = UiApp.getActiveApplication();
  var doc = SpreadsheetApp.openById('0Au-gVDPWE5-bdDhJQzc2N2U4Q2l3LVY2cWpkbHdXMVE');
  var ultimaFila = doc.getLastRow(); 
  var celda = doc.getRange('a1').offset(ultimaFila, 0); 
  celda.setValue(e.parameter.nombre);
  celda.offset(0, 1).setValue(e.parameter.empresa); 
  celda.offset(0, 2).setValue(e.parameter.nit); 
  celda.offset(0, 3).setValue(e.parameter.sector); 
  celda.offset(0, 4).setValue(e.parameter.telefono); 
  celda.offset(0, 5).setValue(e.parameter.email); 
  celda.offset(0, 6).setValue(e.parameter.web); 
  celda.offset(0, 7).setValue(e.parameter.descripcion);      


  app.close();

  return app; 

}

这类似于google文档网站上的示例代码。![在此处输入图片说明] [2]

我还检查了“OnClick”事件,是否设置了“_enviar”功能。

所有文本框和标签都包含在Absolute面板中,包括按钮。

2 个答案:

答案 0 :(得分:0)

不是必须与参数对应的ID,而是名称。 这些在GUI构建器的另一个选项卡中定义,用于通过e.parameter.name

获取值

请参阅下面的屏幕截图:

enter image description here

编辑:在你的评论之后,你检查了GUI中的回调元素吗?它是父母小组吗?

enter image description here

答案 1 :(得分:0)

Tienes que hace un callback element delafunciónquese ejecuta enelbotónquesupongoqueseráhandlerfunction,pero tu tienes puesto quelafunciónquequieres que se ejecute sea Guardar,no te entiendo。 Si de verdad quieres que salte alafunciónguardarpon en “on mouse click” el nombre delafunciónGUARDARy con callback al panel donde tu estas introductionciendo los botones。

(Veo que tienes puesto Panel1 supongoquetendrássutu GUI un panel con el atributo de NOMBRE / NAME:Panel1 y en su interior los botones y los labels)


Donde pone名称:textBox1 tienes que indicar el propio nombre detubotónparaluego usar enelcódigo,e.parameter.NOMBRE_BOTON

si tienes puesto por defectotextBox1tendrásqueusar e.parameter.textbox1

¿Entiendes?

Si no te queda claroalgopregúntameloeroenespañol。

Saludos