gpt4 book ai didi

google-apps-script - 如何使用 ContentService 和 doPost 创建 REST API

转载 作者:行者123 更新时间:2023-12-02 22:32:56 24 4
gpt4 key购买 nike

我想让 myFunction() 发送一个有效载荷,该有效载荷将由 doPost 处理并根据有效载荷返回一些内容。我只能让这些测试脚本在以下任一情况下工作:

a) 使用 doGet(),不传递有效负载,而是按预期返回输出。

b) 使用 doPost(),传递负载但得到 405 代码而不是输出。

我错过了什么?

function doPost(e) {
var ss = SpreadsheetApp.openById('<spreadsheet id for recording parameters>');
var sheet = ss.getSheets()[0];
var record;
for (var i in e.parameters) {
record = 'parameter: ' + i + ' = ' + e.parameters[i];
sheet.getRange(sheet.getLastRow() + 1, 1, 1, 1).setValue(record);
}
var output = ContentService.createTextOutput();
output.setContent("content to return");
return output;
}

function myFunction() {
var url = '<url of above script webapp, set to anonymous, anyone>';
var payload = {payloadToSend : 'string to send'};
var method = 'post'
var response = UrlFetchApp.fetch(url, {method : method, payload: payload}).getContentText();
Logger.log(response);
return;
}

最佳答案

问题似乎是域“script.googleusercontent.com”(提供 ContentService 内容的地方)不允许 POST 方法。当您的 doPost() 处理程序返回 TextOuput 时,它会将重定向发送回客户端,这会导致客户端再次将 POST 发送到 script.googleusercontent.com,这是不允许的。

如果您可以使用 GET,那么这将是推荐的解决方案。如果没有,您可能需要将工作分为两部分:首先 POST 没有响应,然后 GET 以检索响应。

更新:自 2012 年 9 月 21 日起,此问题现已修复,您可以 POST 到 URL 而不会出现任何错误。

关于google-apps-script - 如何使用 ContentService 和 doPost 创建 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11935420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com