google-apps-script - 如何访问我的谷歌应用脚本网络应用?
问题描述
我制作了一个脚本来使用来自我的服务器的数据生成一个表单,并将其部署为一个 Web 应用程序。该脚本位于谷歌标准项目中,处于开发状态,指定了特定用户进行测试。指示了适当的范围,并成功生成了用户的凭据。但是,按照“执行函数”的指南,我总是收到错误:{“错误”:{“代码”:404,“消息”:“未找到请求的实体。”,“状态”:“NOT_FOUND”} }。以下是我的代码:
在 code.js 中:
function doGet(e){
Logger.log('doGet is called');
var params = JSON.stringify(e);
Logger.log('params: '+params);
var mywork = params.parameters['mywork'];
var formName = params.parameter['formName'];
var subject = params.parameter['subject'];
var result = makeQuestionsForm(mywork, formName, subject);
return ContentService.createTextOutput(JSON.stringify(result))
.setMimeType(ContentService.MimeType.JSON);
}
function doPost(e){
Logger.log('doPost is called');
var params = JSON.stringify(e);
Logger.log('params: '+params);
var mywork = params.parameters['mywork'];
var formName = params.parameter['formName'];
var subject = params.parameter['subject'];
var result = makeQuestionsForm(mywork, formName, subject);
return ContentService.createTextOutput(JSON.stringify(result))
.setMimeType(ContentService.MimeType.JSON);
}
function makeQuestionsForm(mywork, formName, subject) {
// code for generating the form
}
我的代码调用脚本:
service = build('script', 'v1', credentials=self.creds)
parameters = {'mywork':self.sheet_body,'subject':request.session['subject'],'formName':title}
api_request = {
"function": "doPost",
"parameters": parameters,
"devMode": True
}
response = service.scripts().run(body=api_request,
scriptId=SCRIPT_ID).execute()
我做了很多尝试:将函数指定为“doPost”、“doGet”或“makeQuestionsForm”,将 scriptId 指定为项目的 id 或脚本的 id。所有人都得到了“NOT_FOUND”结果。
或者,我尝试 urlopen 方法直接调用脚本的 url,并在请求标头处提供令牌。未经授权。
你能帮忙看看,我做错了什么或错过了什么?谢谢
解决方案
我发现了问题。要执行功能,项目必须部署为 API 可执行文件。它被部署为 Web 应用程序,这就是它不被发现的原因。将项目部署为 api 可执行文件后,现在我可以访问该功能。虽然目前权限被拒绝,但这是另一个问题。
推荐阅读
- r - `scale_color_gradient` 中的 `expand` 参数被忽略
- python - 如何改进我在熊猫中的布尔索引?
- javascript - 尝试在 Facebook 上上传图片时出现“(#324)需要上传文件”错误
- node.js - firebase 部署后的“array.forEach 不是功能”,但适用于 firebase 服务
- java - 如何指定应用使用 WiFi 而不是 3G/4G?
- angular - Angular 在 div 可见时显示图表
- php - Codeigniter XSS 过滤忽略 % 符号
- java - 如何在不替换先前数据的情况下将每个循环实例的新行中的数据写入 Excel 表,即如何为每个循环实例附加行?
- spring-boot - 抛出异常spring boot webflux
- mysql - 从 SUM 中取最大值