首页 > 解决方案 > 如何访问我的谷歌应用脚​​本网络应用?

问题描述

我制作了一个脚本来使用来自我的服务器的数据生成一个表单,并将其部署为一个 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,并在请求标头处提供令牌。未经授权。

你能帮忙看看,我做错了什么或错过了什么?谢谢

标签: google-apps-script

解决方案


我发现了问题。要执行功能,项目必须部署为 API 可执行文件。它被部署为 Web 应用程序,这就是它不被发现的原因。将项目部署为 api 可执行文件后,现在我可以访问该功能。虽然目前权限被拒绝,但这是另一个问题。


推荐阅读