【发布时间】:2016-05-22 19:03:52
【问题描述】:
我正在尝试从 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>
【问题讨论】:
-
我没有看到名为
Pass()的函数。从这一行开始:if (Pass(e))如果出现服务器错误,您可能需要添加try/catch块以返回默认值。 -
已编辑 GS 代码,但仍无法在编辑器之外工作。 (调试时工作正常)。返回默认值 - 不是很好的解决方案(所以它成功编辑了电子表格,但没有返回值。
-
尝试在 newResults 上排除
getContent()。 -
没有 getContent() 它将返回对象类型。
标签: javascript html google-apps-script google-sheets google-spreadsheet-api