有关从元素获取数据的事件,Google Script中的事件如何工作

时间:2012-07-11 20:22:37

标签: google-apps-script google-apps

问题1)点击按钮时可以使用这样的东西(见下面的代码)?

function Submit(e) {
  var app = UiApp.getActiveApplication();
  var checked = app.getElementById("checkbox").getValue();
}

问题2)点击标签后可以使用这样的东西(见下面的代码)?

function LabelClick(e) {
  var LabelText = e.parameter.getText();
}

对不起,这可能是愚蠢的,但我看不到找到任何体面的例子,似乎无法从Google的文档中解决这个问题,而且我也习惯了google脚本。如果你有答案我会非常感激。

2 个答案:

答案 0 :(得分:2)

你不是很远......但还不够接近才能让它发挥作用......

Ui元素的值被发送到处理程序函数中,所谓的callbackelement被添加到处理程序中。此回调元素可以是按钮,标签,或者更容易是包含所有其他小部件的父窗口小部件。这些“元素”位于处理函数的“e”中,并由名称标识 在另一个方向,即如果您需要从另一个函数修改Ui元素,那么您可以通过其ID(getElementbyId())获取此元素,并为其指定一个值,就像在此处执行它一样。 UI定义功能。

我从另一篇文章中复制/粘贴示例代码以说明我所说的内容,您可以看到包含checkBox值的e.parameter.chkmode,并且我将添加一个Label来显示相反的过程(文本单击按钮时更改。

希望我足够清楚,

var sh = SpreadsheetApp.getActiveSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
//
function move() {
   var app = UiApp.createApplication().setTitle("move test")
       .setHeight(100).setWidth(400).setStyleAttribute("background-color","beige");
   var panel = app.createVerticalPanel();
   var next = app.createButton('next').setWidth('180');
   var chkmode = app.createCheckBox("moving mode (checked = up/dwn, unchecked=L/R)").setValue(false).setName('chkmode');
   var label = app.createLabel("test Label with text that will be modified on click").setId('label');
   panel.add(next).add(chkmode).add(label);
   var handler = app.createServerHandler('click').addCallbackElement(panel);
   next.addClickHandler(handler);
   app.add(panel);
   ss.show(app);
 }
//
function click(e) {
  var app = UiApp.getActiveApplication();
  var activeline = sh.getActiveRange().getRow();// get the row number of the selected cell/range
  var activecol = sh.getActiveRange().getColumn();// get the row number of the selected cell/range
  var label = app.getElementById('label');
  label.setText('You have clicked the button');
  var chkmode=e.parameter.chkmode;
  if(chkmode=="true"){
    activeline++
    }else{
      activecol++}
  var sel=sh.getRange(activeline,activecol);
  sh.setActiveSelection(sel);// make the next row active
  return app;
 }

答案 1 :(得分:0)

对于UI和事件教程,我建议:

https://developers.google.com/apps-script/uiapp