【问题标题】:Web App call fails with "... Error code INTERNAL" with Custom APIWeb App 调用失败,并带有自定义 API 的“...错误代码 INTERNAL”
【发布时间】:2020-09-10 00:22:42
【问题描述】:

我有一个包含一组卡片的电子表格,我编写了一个doGet() 函数来随机选择一张,并将其返回给用户。在 Web 浏览器中输入 Web App url 时,结果显示正常。但是,当我尝试通过请求模块发出 HTTP Get 请求时,它会返回:

<!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 style="margin:20px"><div><img alt="Google Apps Script" src="//ssl.gstatic.com/docs/script/images/logo.png"></div><div style="text-align:center;font-family:monospace;margin:50px auto 0;max-width:600px">We&#39;re sorry, a server error occurred while reading from storage. Error code INTERNAL.</div></body></html>

提取的错误信息是:

很抱歉,从存储读取时发生服务器错误。错误代码内部。

我用谷歌搜索了这个错误代码,但没有人有相同的“错误代码内部”结尾,而且大多数是关于其他用户的。这是我的doGet函数和请求函数

Google Apps 脚本:

function doGet(request){
  var requestType = request.parameter.type
  if(requestType == "random_card"){
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheets()[0];
    var entriesL = sheet.getLastRow() - 1;
    var cardNum = getRandomInt(entriesL);
    var card = SpreadsheetApp.getActiveSheet().getRange(2 + cardNum, 2).getValue();
    var set = SpreadsheetApp.getActiveSheet().getRange(2 + cardNum, 1).getValue();
    var output = '{"card":"' + card + '","cardSet":"' + set + '"}';
    Logger.log(output)
    return ContentService.createTextOutput(output);
  }
}

Node.js

function randomCard(){
  var info;
  request.get('{url here}?action=get&type=random_card',function(err,res,body){
    console.log(body)
    info = JSON.parse(body);
  });

  return info;
}

【问题讨论】:

  • @OlegValter 所以如果我理解这一点,我需要使用 SpreadsheetApp.openById 而不是 SpreadsheetApp.getActiveSpreadsheet。使用它作为 ss 的值。但是,这样做会导致不同的错误。 " 异常:在对象 SpreadsheetApp 上获取方法或属性 openById 时出现意外错误。"
  • 是的,这应该足够了。该错误表示权限错误(因为您在外部调用 webapp - 尽管您之前应该已经获得权限,因为要求与 getActiveSpreadsheet 相同) - 尝试在脚本编辑器中打开 web 应用程序,运行函数质疑并授权。如果您已经这样做了,请检查网络应用程序是否配置为“以我的身份”运行(如果您同意的话)或考虑切换到 Sheets API
  • @OlegValter 该应用程序设置为以我身份运行,我已授予权限,从编辑器启动 doGet 函数没有问题。从脚本编辑器手动运行时出现相同的错误。我正在使用开发路径进行测试。
  • 我拥有这张表,没有其他手动分享,但任何知道链接的人都可以查看(所以我可以向我认识的人展示)。脚本绑定到工作表。我现在就做实验。
  • @OlegValter 感谢您的所有帮助,我在某些地方做了一些更改,并且两端似乎一切正常。我会继续标记答案。再次感谢您抽出宝贵时间帮助我! :)

标签: node.js google-apps-script node-request server-error


【解决方案1】:

是的,这应该足够了。该错误表示权限错误(因为您 从外部调用 webapp - 尽管您之前应该已经获得了许可 要求与 getActiveSpreadsheet 相同) - 尝试在脚本中打开 Web 应用程序 编辑器,运行有问题的功能并授权它。如果您已经这样做了,请检查是否 Web 应用程序配置为“以我的身份”运行(如果您同意的话)或考虑切换 到表格 API – Oleg Valter

【讨论】:

    猜你喜欢
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多