改變文本時,我創建了一個簡單的用戶界面,短短文本框和幾個按鈕。這個概念基本上就是我維護的電子表格的投票應用程序。當腳本運行時,它會將電子表格的每一行顯示在文本框中,並允許用戶對該項目進行投票。我用手工創建的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
等)
對不起,我意識到,當我切出的處理下一行,你不能看到被定義的變量在哪裏。我會編輯這個問題,使其更清晰。然而,這是分配一個變量(我可以驗證它有它應該在調試視圖的值) – Timbermar
這個問題是我試圖使用'.setText =「測試值」'在我活的代碼,其中作爲,當我在這裏創建示例時(我主要是試圖讓代碼變得簡短),我使用了'.setText(「TestValue」)',它可以正常工作。 – Timbermar