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