2012-06-21 72 views
-2

哪些步驟會重現該問題?createMenuBar參數處理程序

  1. 創建一個菜單對象(createMenuBar)
  2. 創建一個服務器處理點menuHandler功能(createServerHandler)
  3. 添加到菜單欄與參數對象中的項目:名稱和Handler對象;

預期產量是多少?你看到了什麼呢? 在處理程序函數期望該參數返回被單擊的源對象的名稱。現在我看到一個空值。

在哪個瀏覽器上&操作系統? Chrome 19.0.1084.56 m Windows 7 SP1 x64

請在下面提供任何其他信息。

function buildMenu() { 
    var app = UiApp.createApplication(); 

    var myRootMenu = app.createMenuBar(false); 
    var txtTest = app.createTextBox().setText("test").setId("txtTest"); 
    var myHandler = app.createServerHandler("menuHandler").addCallbackElement(txtTest); 

    myRootMenu.addItem("File", myHandler); 

    app.add(myRootMenu); 

    return app; 

} 

function menuHandler(e) { 
    Logger.log(e); 
} 

的日誌輸出是: {參數= NULL}

回答

2

第一:這不是一個問題跟蹤,請發表您的想法是問題where it should be

第二:如果你不要將任何callBackElement添加到服務器處理程序,它不能返回任何值。請仔細閱讀docs

編輯:您的評論如下:

由CallBackElement返回的值被鏈接到其,所以你的代碼應該是這樣的:

app.createTextBox().setName('test').setText("test").setId("txtTest"); 

這裏是一個工作示例:

function buildMenu() { 
    var app = UiApp.createApplication(); 
    var myRootMenu = app.createMenuBar(false); 
    var txtTest = app.createTextBox().setText("Got it !").setName('test'); 
    var myHandler = app.createServerHandler("menuHandler").addCallbackElement(txtTest); 
    myRootMenu.addItem("File", myHandler); 
    app.add(myRootMenu); 
    var doc = SpreadsheetApp.getActive(); 
    doc.show(app); 
} 
function menuHandler(e) { 
    Logger.log(e); 
} 
+0

嗨,Serge。 按照您的建議,我添加了一個callBack元素並繼續不返回任何值。 (我用我的代碼編輯原始帖子)。 –