Anu*_*hra 6 post google-apps-script
我遇到了各种问题,但没有一个能解决我的问题.我doPost()在谷歌应用程序脚本中写了一个简单的代码:
function doPost(e){
Logger.log("Hello World");
}
Run Code Online (Sandbox Code Playgroud)
然后我将其部署为网络应用程序并将网址粘贴到hurl.it上以发布帖子请求.但是,日志中没有记录任何内容,响应为200(确定).我认为它不会进入这个doPost()功能.任何人都可以指导我在这里做错了什么?
您的实施不符合Web应用程序所需的所有要求.以下是文档(链接)的摘录:
Web应用程序的要求
如果脚本满足以下要求,则可以将其发布为Web应用程序:
- 它包含一个
doGet(e)或doPost(e)功能.- 该函数返回HTML服务
HtmlOutput对象或内容服务TextOutput对象.
这里有些例子:
function doGet(e) {
var params = JSON.stringify(e);
return HtmlService.createHtmlOutput(params);
}
function doPost(e) {
return ContentService.createTextOutput(JSON.stringify(e.parameter));
}
Run Code Online (Sandbox Code Playgroud)
而且为了完整起见,每次更改代码时,还必须将Web App重新部署为新版本.在现有版本下重新部署不起作用,您必须为更改创建新版本才能生效.
此外,还使用标准Logger.log来跟踪Web应用程序内部的更改doGet(e)或doPost(e)不可靠,因为它们是异步执行的.我建议您将输出记录到电子表格中.有一个很棒的脚本库叫做BetterLog,它扩展了Logger API来做到这一点; 它可以在以下链接中找到:
https://github.com/peterherrmann/BetterLog
更新2018-07-18
Apps脚本现在支持StackDriver Logging,可从Apps Scripts编辑器的View菜单访问.
为了使发布的Web应用程序URL的“ exec”版本能够进行任何新更改,您每次对脚本进行更改时都必须发布新版本。更改有多小无关紧要。而不是使用Logger.log("Hello World");我将值写入电子表格。
SpreadsheetApp.openById(id).getSheetByName(name).appendRow(['test']);
Run Code Online (Sandbox Code Playgroud)
Web应用程序有2个不同的URL。一个以“ dev”结尾,另一个以“ exec”结尾。'dev'版本始终是当前代码。除非发布新版本,否则“ exec”版本永远不会更改。
| 归档时间: |
|
| 查看次数: |
3314 次 |
| 最近记录: |