doPost在Google应用程序脚本中不工作
我遇到了各种各样的问题,但没有一个能解决我的问题。我在google应用程序脚本中编写了一个简单的doPost在Google应用程序脚本中不工作,post,google-apps-script,Post,Google Apps Script,我遇到了各种各样的问题,但没有一个能解决我的问题。我在google应用程序脚本中编写了一个简单的doPost()代码: function doPost(e){ Logger.log("Hello World"); } 然后我将其部署为一个web应用程序,并将url粘贴到hurl.it上以发出post请求。但是,日志中没有记录任何内容,响应为200(正常)。我认为它不在这个doPost()函数中。有人能告诉我我做错了什么吗?您的实现没有满足web应用程序所需的所有要求。以下是文档()的摘录:
doPost()
代码:
function doPost(e){
Logger.log("Hello World");
}
然后我将其部署为一个web应用程序,并将url粘贴到hurl.it上以发出post请求。但是,日志中没有记录任何内容,响应为200(正常)。我认为它不在这个
doPost()
函数中。有人能告诉我我做错了什么吗?您的实现没有满足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));
}
为了完整起见,您还必须在每次更改代码时将web应用重新部署为新版本。在现有版本下重新部署不起作用,您必须创建新版本才能使更改生效
使用标准的Logger.log
跟踪doGet(e)
或doPost(e)
中的更改对于web应用程序来说也是不可靠的,因为它们是异步执行的。我建议您将输出记录到电子表格中。有一个很棒的脚本库,名为BetterLog,它扩展了Logger API来实现这一点;可在以下链接中找到:
更新2018-07-18 应用程序脚本现在支持StackDriver日志记录,可从应用程序脚本编辑器的“查看”菜单访问。为了使发布的Web应用程序URL的“exec”版本在任何新更改下运行,您必须在每次更改脚本时发布新版本。变化有多小并不重要。而不是使用
Logger.log(“Hello World”)代码>我会将一个值写入电子表格
SpreadsheetApp.openById(id).getSheetByName(name).appendRow(['test']);
您的Web应用有两个不同的URL。一个结尾是“dev”,另一个结尾是“exec”。“dev”版本始终是当前代码。除非发布新版本,否则“exec”版本永远不会更改。我为此挣扎了一段时间,终于幸运了。
我经常使用w3schools,所以我充分阅读了form元素及其属性。
ACTION属性似乎是让doPost(e)为me和GAS工作的关键
这是我的HTML(删除了左括号和右括号)
原因之一可能是您使用的是Postman之类的Rest客户端。这不管用,尽管我不知道原因
尝试使用这样的标准形式,它将起作用:
<!DOCTYPE html>
<html>
<body>
<form action="https://script.google.com/macros/s/AKfyc.../exec">
First name:<br>
<input type="text" name="param1" value="ABC">
<br>
Last name:<br>
<input type="text" name="param2" value="XYZ">
<br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
名字:
姓氏:
function doPost(e){
Logger.log("I WAS RAN!!")
if(typeof e !== 'undefined') {
return ContentService.createTextOutput(JSON.stringify(e.parameter));
}
}
<!DOCTYPE html>
<html>
<body>
<form action="https://script.google.com/macros/s/AKfyc.../exec">
First name:<br>
<input type="text" name="param1" value="ABC">
<br>
Last name:<br>
<input type="text" name="param2" value="XYZ">
<br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>