我有一个带有一组卡片的电子表格,我编写了一个doGet()函数来选择一个随机的函数,并将它返回给用户。当将Web输入到web浏览器中时,结果会很好。但是,当我试图通过请求模块发出HTTP请求时,它会返回以下内容:
<!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're sorry, a server error occurred while reading from storage. Error code INTERNAL.</div></body></html>提取的错误消息是:
我们很抱歉,在从存储中读取时发生了服务器错误。内部错误代码。
我搜索了这个错误代码,但是没有人拥有“内部错误代码”的相同结尾,而且大多数都是关于其他用户的。这是我的doGet函数和请求函数
Google脚本:
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;
}发布于 2020-05-23 23:26:14
是的,这应该够了。该错误表示权限错误(因为您在外部调用webapp --尽管您之前应该获得该权限,因为getActiveSpreadsheet的要求是相同的)--尝试在脚本编辑器中打开web应用程序,运行该函数并对其进行授权。如果您已经这样做了,请检查web应用程序是否配置为"as me“(如果您同意),或者考虑切换到Sheets API - Oleg Valter
。
https://stackoverflow.com/questions/61967246
复制相似问题