2012-07-11 53 views
0

問題1)單擊某個按鈕時是否可以使用類似的方法(請參見下面的代碼)?Google Script中的事件如何從元素中獲取數據

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

問題2)單擊標籤時可以使用類似的東西(見下面的代碼)?

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

對不起,這可能是愚蠢的,但我不能看到找到的這個任何像樣的例子,似乎無法從谷歌的文檔來解決這一問題,我只是習慣了谷歌的腳本了。如果你有答案,我會非常感激。

回答

2

你是不是很遠......但沒有足夠接近得到它的工作...

UI元素的值是在被添加到處理器所謂callbackelement發送到處理函數。這個callbackelement可以是一個按鈕,一個標籤,或者更容易的是包含所有其他小部件的父小部件。這些「元素」在處理函數的「e」中,並且由它們的名稱來標識。
另一方面,也就是說,如果您需要從另一個函數修改Ui元素,則可以通過其ID(getElementbyId())獲取該元素,併爲其分配一個值,就像在UI定義中一樣功能。

我複製/粘貼來自另一篇文章的示例代碼來說明我所說的,你可以看到e.parameter.chkmode,它包含了checkBox的值,我將添加一個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; 
} 
+0

啊,我明白了,非常感謝,真的很感激。 :) – 2012-07-11 21:03:52

+0

我的榮幸:-) – 2012-07-11 21:05:18

相關問題