脚本已完成,但返回的值不是受支持的返回类型

时间:2016-05-22 19:03:53

标签: javascript html google-apps-script google-sheets google-spreadsheet-api

我试图从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;
}
&#13;
&#13;
&#13;

我从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>

1 个答案:

答案 0 :(得分:1)

您的函数doGet正在尝试返回newResult.getContent()这是一个字符串。但是doGet不允许返回字符串。它必须返回一个可接受类的对象:HtmlOutput(使用HtmlService创建)或TextOutput(使用ContentService创建)。

因此,它应该是return newResult;而不是return newResult.getContent();