我需要访问 Google App Script 中发布请求的原始正文。我看到有类似的东西
function doPost(request) {
request.contentLength
}
这实际上返回请求正文的原始内容的正确长度。所以我认为必须有一些东西来获得完整的身体,例如作为一个字符串。
我不希望访问可能使用 post 传输的表单字段参数。
我需要访问 Google App Script 中发布请求的原始正文。我看到有类似的东西
function doPost(request) {
request.contentLength
}
这实际上返回请求正文的原始内容的正确长度。所以我认为必须有一些东西来获得完整的身体,例如作为一个字符串。
我不希望访问可能使用 post 传输的表单字段参数。
我知道这个问题已经过时了,但是很多事情都发生了变化,谷歌现在已经提供了这个问题。您可以通过以下方式轻松访问 POST 请求的正文doPost(e)
:
e.postData.contents
如果要解析传入的 JSON,请使用以下命令:
JSON.parse(e.postData.contents)
从2013 年 5 月 9 日的发行说明中,使用request.postData.getDataAsString():
function doPost(request) {
var jsonString = request.postData.getDataAsString();
var jsonData = JSON.parse(jsonString);
sheet.appendRow([ 'Data1:' , jsonData.Data1 ]); // Just an example
}
我认为目前无法访问 POST 正文,例如实现 REST 服务。我为此提交了增强请求;如果您偶然发现了这个,请随时为它加注星标以对该问题进行投票。
您可以通过从参数创建 Blob 来访问帖子的原始正文。然后,您可以在 Blob 对象上调用各种方法,例如 getBytes() 或 getDataAsString()。此处列出了这些功能。
function doPost(event) {
var contentBlob = event.parameter.thefile;
var contentAsString = contentBlob.getDataAsString();
var bytes = contentBlob.getBytes();
// do something with the contents ...
}
这也应该有效。
function doPost(e) {
if(typeof e !== 'undefined')
Logger.log(e.parameter);
}
根据您尝试执行的操作的性质以及您对发布请求发起的控制权,您可能能够与 Drive API 集成。如果帖子数据可以作为文件(例如包含原始 JSON 数据)发送到用户的云端硬盘帐户,那么您的脚本就可以找到该文件,加载其内容,对它进行任何您需要的操作(例如,将其放入电子表格中),并且可以选择删除云端硬盘文件。当然,这假设您可以控制发布请求的发送方式。工作流程可能涉及:
我还没有尝试过,但应该可以!
找出您有权访问的所有内容的最简单方法是打印出请求对象。
function doPost(request) {
Logger.log(request);
}
然后对脚本的 URL 进行 POST 以查看日志内容