2012-09-05 15 views
0

改變文本時,我創建了一個簡單的用戶界面,短短文本框和幾個按鈕。這個概念基本上就是我維護的電子表格的投票應用程序。當腳本運行時,它會將電子表格的每一行顯示在文本框中,並允許用戶對該項目進行投票。我用手工創建的UI:錯誤文本

function BuildUI() { 
var app = UiApp.createApplication().setTitle("Voting Machine").setWidth(700); 
var doc = SpreadsheetApp.getActiveSpreadsheet(); 
var buttonWidth = "125px"; 

// Panels 
var mainPanel = app.createVerticalPanel(); 
var horzPanel = app.createHorizontalPanel(); 
var buttonGrid = app.createGrid(1,3); 

// Textboxes 
var txtCat = app.createTextBox().setName("txtCat").setId("txtCat"); 
var txtIdea = app.createTextBox().setName("txtIdea").setId("txtIdea"); 

// Handlers 
var handler = app.createServerHandler(); 
handler.setCallbackFunction("recordVote"); 
handler.addCallbackElement(txtCat).addCallbackElement(txtIdea); 

// Buttons 
var voteNo = app.createButton("No").setId("voteNo") 
    .addClickHandler(handler).setWidth(buttonWidth); 
var voteMaybe = app.createButton("Maybe").setId("voteMaybe") 
    .addClickHandler(handler).setWidth(buttonWidth); 
var voteYes = app.createButton("Yes").setId("voteYes") 
    .addClickHandler(handler).setWidth(buttonWidth); 

horzPanel.add(txtCat).add(txtIdea) 
buttonGrid.setWidget(0, 0, voteNo) 
    .setWidget(0, 1, voteMaybe) 
    .setWidget(0, 2, voteYes); 
mainPanel.add(horzPanel).add(buttonGrid); 

app.add(mainPanel); 
doc.add(app); 
} 

的問題是,當我把我的NextIdea功能我得到一個錯誤:

function NextIdea() { 
var app = UiApp.getActiveApplication(); 
... Get the next row of the spreadsheet ... 
app.getElementById("txtCat").setText("TestValue"); // <--- This is the error line 

在那裏我嘗試設置在文本框中的文本行我收到一個錯誤「對象不允許添加或更改屬性」。在調試窗口中,它給了我一個對象編號,但沒有屬性,並且嘗試將其作爲未定義返回。

上述這些問題都被我ProcessVotes功能,通過自定義菜單項的電子表格程序叫觸發:

function ProcessVotes() { 
BuildUI(); 
NextIdea(); 
} 

這是我在創造一種氣體的第一次嘗試,不知道我錯過了什麼。我在功能結尾處看到很多使用return app;的示例,但我的印象僅限於腳本作爲服務發佈時使用。我試圖用這個電子表格中的這一部分(使用onOpen而不是onGet等)

回答

0

function NextIdea() { 
var app = UiApp.getActiveApplication(); 
... Get the next row of the spreadsheet ... 
app.getElementById("txtCat").setText(nextRowCat) // <--- This is the error line 

什麼是nextRowCat?它應該是一個字符串(然後你忘了'')?它是一個字符串值的變量嗎?

無論如何,這應該是一個字符串;-)您的評論如下

編輯:你嘗試這個新的版本完全相同(.setText("TestValue"))你的代碼?

我也沒有看到任何顯示(APP)在你的主要功能(如您創建UI實例應用程序中的一個)......我想這會更容易幫助,如果你顯示整個代碼或者至少一個簡化的但'可運行'的代碼,你會得到錯誤。

關於getText()返回不確定的,這是一種正常的行爲:沒有對textBox中沒有這樣的方法......(see docs)來檢索它的值是處理函數中使用e.parameter.textBoxName通常使用的方法。

+0

對不起,我意識到,當我切出的處理下一行,你不能看到被定義的變量在哪裏。我會編輯這個問題,使其更清晰。然而,這是分配一個變量(我可以驗證它有它應該在調試視圖的值) – Timbermar

+0

這個問題是我試圖使用'.setText =「測試值」'在我活的代碼,其中作爲,當我在這裏創建示例時(我主要是試圖讓代碼變得簡短),我使用了'.setText(「TestValue」)',它可以正常工作。 – Timbermar