2012-05-15 39 views
0

因此,我目前正在研究在電子表格中運行的物品結帳系統的GUI。它做它應該做的一切,不會返回任何空,通常我會很滿意它的結果。使用Apps腳本GUI構建器的問題

但是,無論何時按下提交按鈕,我都會收到「遇到錯誤,發生意外錯誤」,之後代碼的其餘部分按預期運行。每過一段時間,我都會得到無誤的答案,但絕大多數情況下它會拋出錯誤。

function onOpen() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var menuEntries = [{name: "Equipment Checkout", functionName: "testing"}]; 
    ss.addMenu("Equipment Checkout", menuEntries); 
} 

function testing(){ 
    var app = UiApp.createApplication(); 
    app.add(app.loadComponent("ImprovedCheckout")); 
    var doc = SpreadsheetApp.getActiveSpreadsheet(); 
    doc.show(app); 
} 


function submitted(e){ 
    Browser.msgBox(e.parameter.requestor); 
} 

這是我的代碼的最簡單版本。 我使用gui builder來創建gui,我也使用它來創建事件處理程序。在過去的一個小時裏,我一直在撞牆,因爲它似乎在提交的第一行(e)之前發生了錯誤,但直到我實際單擊提交按鈕才發生錯誤。它不會每次都發生,但大部分時間都會發生。

我想我正在處理來自生成器的事件錯誤,但有關該功能的信息很少哦。

+0

你說這是你的代碼最簡單的版本。當你使用完全像這樣的代碼時,這個錯誤會發生嗎?請再次測試以回答(不要做出假設)。 –

+0

我只是再次刷新所有頁面,我再次檢查所有輸入。你是說你有這個運行沒有錯誤嗎?也許我應該放棄一切,重新開始...... –

+0

是的,我遇到過一個提到那個帖子,沒有運氣:( –

回答

1

顯示它! 而不是使用提交按鈕,我將其更改爲只是一個普通的舊按鈕。它看起來像提交按鈕試圖運行其他東西

它看起來像提交按鈕有一些額外的規則和要求,但暫時,我只是使用正常的按鈕。

+0

哦!的確,'SubmitButton'不需要回調元素,甚至不需要處理程序。它應該和'FormPanel'一起使用,並且總是在腳本上調用'doPost'方法。如果這不是您的使用,請使用常規按鈕。好的趕上! –

+0

ahhhh,當他們需要一個表單面板時,我覺得很奇怪。我真的希望他們有更多的UI教程。 –

0

我沒有運行您提供的代碼的問題。有兩件事是關鍵的:

  1. 請確保您將代碼中使用的HTML名稱爲「requestor」的回調元素添加到ServerHandler。
  2. 添加回調元素時,請在GUI編輯器中使用ID。 Name!= ID

在這個例子中需要設置Name和ID。

+0

我想重申,它是工作。我已經正確地標記了所有東西(我注意到了名稱和ID字段,我使用了它們並且它們都使用了相同的名稱)問題是它還拋出了「遇到錯誤,發生了意外錯誤」錯誤2/3rds的時間以及。 –

1

我看到這個錯誤發生時,人們爲同一個按鈕設置兩個處理程序。通常通過GUI編輯器和另一個代碼。一個工作,另一個失敗。這給人們這個瘋狂的印象,它會拋出一個錯誤,但仍然有效。

但是既然你說過這是你正在使用的確切代碼。您是否在GUI構建器上設置了多個處理程序?我不知道這是否可能,我從不使用GUI構建器。

+0

我認爲你在正確的軌道上。我剛剛刪除了一些不應該被調用的函數調用,但我猜不知他們是什麼。現在我無法重複這個問題。我想我會開始慢慢地添加更復雜的東西,並試圖找出造成這種情況的原因。 –

+0

沒關係,我想我只是處於一個非常幸運的狀態...... –

+0

但是這種方法仍然有效,從小處開始並慢慢添加,總是在迭代之間進行測試,直到找出問題。如果你不能,我建議你不要使用GUI構建器,因爲我們無法幫助你(沒有調試或者與我們分享的任何方式)。 –

0

當使用getElementbyId('id「)並且有一個錯誤的值作爲ID時,我得到了同樣的錯誤信息。腳本本身並不真正停止,除了這個特定的調用應該執行的動作外, (但這並不總是'顯而易見')