php - 如何将返回的谷歌应用脚本“doPost(e)”函数存储在 cURL 的变量中?
问题描述
我在谷歌应用程序脚本上编写了一个 doPost(e) 函数,该函数将根据发送的数据返回一个数字。该脚本返回一个数字,有点像这样:
谷歌应用脚本代码:
doPost(e)
{
/* Code that does stuff with the parameters */
var results = 3;
var result_output = JSON.stringify(results);
var output = ContentService.createTextOutput(result_output).setMimeType(ContentService.MimeType.JSON);
return output;
}
这是我的 cURL 代码,它发送适当的值,旨在将 Google App 脚本代码返回的输出存储在一个变量中,以便稍后在程序中使用:
function connect_to_GAS()
{
// Get cURL resource
$curl = curl_init();
// Set some options
curl_setopt_array($curl, array(
CURLOPT_URL => 'puturlhere',
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => array(
// add params here
)
));
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); // there is a redirect
// Send the request, save response to $resp
$resp = curl_exec($curl);
echo $resp;
}
当我返回 $resp 值时,它只返回“1”,因为该函数已成功执行,但由于某种原因我无法让它存储重新调整的值!!!
我已将其部署为 Web 应用程序,并且脚本的 Post 功能确实有效,但我的 cURL 端没有收到我想要的值。令人沮丧的是,当我运行我的 cURL 脚本时,我需要的值显示在生成的网页中,但我无法访问它。
有谁知道我如何存储响应????任何帮助深表感谢!!
解决方案
- 首先,当您对脚本进行更改时,需要将其保存为新版本并再次发布以使其生效。
- 您正在返回一个数字,但不是 json。尝试返回正确的 json。
- 对于这种情况,我使用 guzzle。
- 结果得到的 1 与从 gs 文件返回的变量无关。那 1 表示 curl 已经成功。
示例代码
在 gs 文件中
function doPost(e){
//WHILE PRODUCTION
//var postData = JSON.parse(e.postData.contents);
//WHILE TESTING
//var postData = e.postData.contents;
return ContentService.createTextOutput(JSON.stringify({'status': 'success'})).
setMimeType(ContentService.MimeType.JSON);
}
function test(){
var payload = {
"key1": "value1",
"key2": "value2",
}
var e = {
postData: {
contents: payload
}
};
var returned = doPost(e);
}
在 php 文件中
<?php
session_start();
require_once '../vendor/autoload.php';
$client = new GuzzleHttp\Client(['verify'=>false]);
// Webapp link
$url = 'https://script.google.com/macros/s/yourwebapplink/exec';
$payload = json_encode(array("key1" => "value1", "key2" => "value2"))
$response = $client->request('POST', $url, ['json' => $payload]);
$body = json_decode($response->getBody());
print_r($body);
return;
?>
如果您使用作曲家,安装 guzzle 很容易
推荐阅读
- python - 如何在键盘的帮助下移动乌龟中的物体?
- javascript - 如何使用从 JavaScript 开始的 ESC/POS 打印机进行打印(无界面)?
- c++ - 斐波那契测试 (C++) 的错误结果
- lumen - 调用未定义的方法 Laravel\Lumen\Application::configurationIsCached()
- excel - 从单元格中获取唯一的字符串并更改其颜色
- vue.js - vue.js keep-alive 和事件渲染
- deep-learning - 如何在pytorch中连接嵌入层
- html - 使用 CSS(Flex 或 CSS Grid)在水平和垂直布局之间切换
- sql - 使用 SQL Server DB 从 Linux 服务器连接到 Windows 服务器
- amazon-web-services - 为什么我无法从我的 EC2 实例访问我的亚马逊 RDS 实例?