0

我試圖從Google Script獲得響應。但它給了我一個錯誤:腳本已完成,但返回值不是受支持的返回類型。腳本已完成,但返回的值不是受支持的返回類型

下面是一些腳本代碼:

function doGet(e) { 
 

 
    var result = 'ERROR PASSWORD'; 
 

 
    if (Pass(e)) { 
 
    result = ParseRequest(e); 
 
    } 
 

 
    return ContentService.createTextOutput(result); 
 
} 
 

 

 
function ParseRequest(e) { 
 
    var result; 
 

 
    if (!CheckOrAddData(e)) { 
 
    result = 'FAILED'; 
 
    } else { 
 
    result = 'ACTIVATED PROMOCODE'; 
 
    } 
 

 
    return result; 
 
} 
 

 

 

 
function Pass(e) { 
 
    var ss = SpreadsheetApp.openById(e.parameters.ssid); 
 
    var sheet = ss.getSheetByName('PASS'); 
 
    var sheetPass = sheet.getDataRange().getValue(); 
 

 
    if (e.parameters.pass == sheetPass) 
 
    return true; 
 
    else 
 
    return false; 
 
} 
 

 

 
function CheckOrAddData(e) { 
 

 
    var promoCode = e.parameters.promocode; 
 
    var nickName = e.parameters.username; 
 
    var ss = SpreadsheetApp.openById(e.parameters.ssid); 
 

 
    var sheet = ss.getSheetByName('DATA'); 
 

 
    if (nickName == "") { 
 
    return false; 
 
    } 
 

 
    var range = sheet.getRange('A1:B'); 
 
    var rows = range.getNumRows(); 
 
    var values = range.getDisplayValues(); 
 

 
    for (var i = 0; i < rows; i++) { 
 
    if (values[i][0] == promoCode) { 
 
     if (values[i][1] == 'NO') { 
 
     var cell = range.getCell(i + 1, 2); 
 
     cell.setValue(nickName); 
 
     return true; 
 
     } 
 

 
     if (values[i][1] == nickName) { 
 
     return true; 
 
     } 
 
    } 
 
    } 
 
    return false; 
 
}

這種反應,我從Hurl.it得到:

<!DOCTYPE html> 
<html> 
    <head> 
    <link rel="shortcut icon" href="//ssl.gstatic.com/docs/script/images/favicon.ico"> 
     <title>Error</title> 
     <style type="text/css">body {background-color: #fff; margin: 0; padding: 0;}.errorMessage {font-family: Arial,sans-serif; font-size: 12pt; font-weight: bold; line-height: 150%; padding-top: 25px;}</style> 
    </head> 
    <body> 
     <div> 
     <img src="//ssl.gstatic.com/docs/script/images/logo.png"> 
     </div> 
     <center>The script completed but the returned value is not a supported return type.</center> 
     </body> 
    </html> 
+0

我沒有看到一個名爲函數'通行證()'。從這一行開始:'if(Pass(e))'如果存在服務器錯誤,您可能需要添加一個try/catch'塊來返回默認值。 –

+0

編輯的GS代碼,仍然不在編輯器之外工作。 (在調試時工作正常)。返回默認值 - 不是很好的解決方案(所以它成功地編輯了電子表格,但沒有返回值 – huran438

+0

嘗試排除newResults上的'getContent()' –

回答

1

你的功能doGet試圖返回newResult.getContent()這是一個字符串。但doGet不允許返回一個字符串。它必須返回可接受的類的對象:HtmlOutput(使用HtmlService創建)或TextOutput(使用ContentService創建)。

所以,它應該是return newResult;return newResult.getContent();

+0

將doGet()更改爲: http://pastebin.com/LtcV94bU但它仍然無法工作((( – huran438

+0

「不工作」......你知道你可以獲得腳本失敗的即時電子郵件通知嗎?另外,還有一個引用功能'CheckOrAddData'和你沒有發佈該功能 –

+0

已更新Google腳本,TextOutput和HtmlOutput都無法正常工作,我的電子郵件中沒有任何通知對不起,但我真的不知道問題出在哪裏 – huran438

相關問題