我使用Google Apps脚本部署了一个Web应用程序,当我尝试使用Node.js
向其发出请求时,出现以下错误:
找不到Google云端硬盘页面-很抱歉,目前无法打开文件
但是当我使用Postman
发送请求时,一切正常。
这是我的node.js代码:
const options = {
'method': 'post',
'gzip': true,
'accept': '*/*',
'content-length': 0,
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',
'url': 'https://script.google.com/macros/s/script-id/exec'
}
request(options, (error, response, body) => {
if(response.statusCode == 200) {
res.sendStatus(200);
}
else {
res.sendStatus(500);
}
});
这是Google Apps脚本网络应用的内容:
function doPost(e) {
return ContentService.createTextOutput(JSON.stringify({success: true}));
}
还有几个与此主题相关的问题,但是他们提供的解决方案是从URL中删除/u/#
...在我的情况下不适用。
是否会因为我正在从http
服务器向部署在https
上的Web应用程序发出请求而发生?那是我唯一想的...
更新:
我还尝试过从HTTPS
节点服务器发送请求,但该请求仍然无法正常工作。
发出GET
请求很好。
答案 0 :(得分:1)
要从POST
服务器向使用Node.js
部署的Web应用程序发出Google Apps Script
请求,需要指定'Content-Length'
标头以及followAllRedirects
选项设置为true
,这是必需的,因为初始请求是重定向到另一个返回响应的请求。
工作代码如下:
const options = {
'method': 'post',
'gzip': true,
'body': [],
'followAllRedirects': true,
'headers': {
'Content-Length': 0 // length of the specified `body`
},
'url': 'https://script.google.com/macros/s/scriptID/exec'
}
request(options, (error, response, body) => {
if(response.statusCode == 200) {
res.sendStatus(200);
}
else {
res.sendStatus(500);
}
});
希望这会帮助面临此问题的其他人。
答案 1 :(得分:-1)
在Google Apps脚本中发布Web应用程序时,请确保将“谁拥有访问权限”选项设置为“任何人,包括匿名用户”。
此外,如果您的组织不允许在组织外部共享云端硬盘文件,则可能无法使用。 GSuite管理员只能changed设置此设置。