2013-11-14 50 views
1

我有一個提交表單的應用程序。我確信我的代碼很好,但是當我執行應用程序時,我遇到了這個錯誤:error encountered script bad value錯誤提交表單谷歌應用腳​​本錯誤值

這裏是我的兩個功能:doGet寫入形式和onSumbit提交表單到電子表格

function doGet() 
{ 
var Myapp= UiApp.createApplication(); 
var panel=Myapp.createAbsolutePanel().setStyleAttributes({'position':'fixed', 
                 'top':'15%', 
                 'left':'2%', 
                 'height':'300', 
                 'width':'500',}); 
var NameLabel=Myapp.createLabel().setText('Name'); 
var NameTb=Myapp.createTextBox().setId('Nameid').setName('Name'); 
var LastNameLabel=Myapp.createLabel().setText('Last name'); 
var LastNameTb=Myapp.createTextBox().setId('Lastnameid').setName('LastName'); 
var emailLABEL=Myapp.createLabel().setText('Email'); 
var emailtb=Myapp.createTextBox().setName('Email'); 
var serverHandler=Myapp.createServerHandler('onSubmitForm'); 
var ButtonSubmit=Myapp.createButton('submit',serverHandler); 
    serverHandler.addCallbackElement(NameTb).addCallbackElement(LastNameTb).addCallbackElement(emailtb); 
var panelButton =Myapp.createFlowPanel().setStyleAttributes({'position': 'fixed', 
                  'border' : '2px solid black', 
                  'top' : '80%', 
                  'left' : '70%', 
                  'width' : '55', 
                  'height':'30'}); 

Myapp.add(panel); 
Myapp.add(panelButton); 
panel.add(NameLabel); 
panel.add(NameTb); 
panel.add(LastNameLabel); 
panel.add(LastNameTb); 
panel.add(emailLABEL); 
panel.add(emailtb); 
panelButton.add(ButtonSubmit); 

return Myapp; 
} 
function onSubmitForm(e) 
{ 
var Myapp = UiApp.getActiveApplication(); 

var sheet  =SpreadsheetApp.openById('0Ar2BlsmmO4nZdHN6WXp2akx1QWUzX3lKX19rYzUyRVE&usp').getActiveSheet(); 

var numRows = sheet.getLastRow(); 

sheet.getRange("A"+lastRow).setValue(e.parameter.Name); 
sheet.getRange("B"+lastRow).setValue(e.parameter.LastName); 
sheet.getRange("C"+lastRow).setValue(e.parameter.Email); 

return Myapp; 
} 

謝謝您的幫助。

+0

newSp定義在哪裏? –

+0

這裏是我提交的新函數,但我仍然有同樣的錯誤,ps:我有一個其他函數doGet,我寫我的表格 function onSubmitForm(e) { var Myapp = UiApp.getActiveApplication() ; var sheet = SpreadsheetApp.openById('0Ar2BlsmmO4nZdHN6WXp2akx1QWUzX3lKX19rYzUyRVE&usp')。getActiveSheet(); var lastRow = sheet.getLastRow(); sheet.getRange(「A」+ lastRow).setValue(e.parameter.Name); sheet.getRange(「B」+ lastRow).setValue(e.parameter.LastName); sheet.getRange(「C」+ lastRow).setValue(e.parameter.Email); return Myapp; } – Marooweb

+0

請使用正確的代碼編輯您的文章,而不是評論......不太可讀。 –

回答

1

該錯誤似乎來自spreadSheetApp調用,此Id是否存在,並且您是否可以編輯訪問權限?

另一點:不要在該環境中使用getActiveSheet(),因爲沒有電子表格打開,因此沒有活動工作表....請使用getSheetByName()代替。

最後一點:你正在使用一個不存在的變量lastRow ....你定義了numRows,很好用! (但添加+1 otherwhise你每次提交時間覆蓋最後一排

下面是替換代碼:(我用另一個ID爲我的測試,修正值和DUBBLE檢查)

var sheet = SpreadsheetApp.openById('0AnqSFd3iikE3dGFpMm1IMHo5OGZteUZSTEV6NnRUT2c').getSheetByName('Sheet1'); 

var numRows = sheet.getLastRow()+1; 

sheet.getRange("A"+numRows).setValue(e.parameter.Name); 
sheet.getRange("B"+numRows).setValue(e.parameter.LastName); 
sheet.getRange("C"+numRows).setValue(e.parameter.Email); 

最後,爲什麼不使用更常見的doGet/doPost結構,它將簡化腳本,因爲它不需要callbackElement和處理程序...? 另外,請考慮在處理函數中添加一些內容以告訴用戶表示他的表單已被提交,否則他們將無限期地點擊它;-)

+0

謝謝你的幫助,其實錯誤是spreedsheet的ID我不知道我是如何在電子表格的鍵中添加'&usp'的,現在一切工作,並認爲您使用doPost的建議;) – Marooweb