当前位置: 首页 > 知识库问答 >
问题:

从GoogleSheet脚本向webservice发送JSON数组

墨雨华
2023-03-14

我们有一个返回产品信息的网络服务。服务期望在发布数据中有一个JSON数组...该

来自简单HTML测试网页的示例脚本如下所示(该脚本按预期工作):

    &ltscript src="//code.jquery.com/jquery-1.11.2.min.js"></script>

    <script type="text/javascript">

    $(document).ready(function(){

    // request is array of product IDs e.g. pid:[71,72,74]

    // request is array of search terms e.g. find:['apples','oranges','pears']
    // request can contain requested fields from products
    // fields:['CostPrice','Published','title','Price']

    jQuery.ajax({
        url : 'http://somewebsite.com/__getProductData',
        type: 'POST',
        dataType : 'json',
        data: { pid:[658,71,6,700], fields:['pid','CostPrice','type','published','title'] },

    success:function(data) { 

        // do something with the response...    

        });


     },

    error: function(  jqXHR,  textStatus, errorThrown) {alert('Error Status:' + textStatus + '    Error:'+errorThrown); }

    }

    );


    });

    </script>

用PHP编写的web服务正确地接收到这一信息。转储(打印)web服务从客户端接收的数据将导致以下数组:


    Array ( 
    [pid] => Array ( [0] => 658 [1] => 71 [2] => 6 [3] => 700 ) 

    [fields] => Array ( [0] => pid [1] => CostPrice [2] => type [3] => type [4] => published [5] => title ) 

现在问题来了......我试图从Google Sheet Script调用webservice,如下所示:

    function getProduct( pid,datetime) {

      // 
      var url = 'https://somewebsite.com/__getProductData';

      //pid:[658,71,6,700], fields:['pid','CostPrice','type','published','title']

      var nids = new Array( 658,71,6,700 );

      var fields = ['pid','CostPrice','type','published','title']
      var payload =
          { 
          pid : nids,
          fields: fields

       };

       var options =
       {
         "method": 'POST',

         "payload": payload


       };

      var response = UrlFetchApp.fetch(url, options);

     Logger.log(response);


    }

从Google Sheets脚本调用PHP web服务时,JSON数组未正确接收:

    Array ( [data] => { pid=[Ljava.lang.Object;@1bfbb500} fields=[Ljava.lang.Object;@3ffbb500})

我想这是与编码或头相关的东西。。。我尝试了大多数标题和contentType的组合,但都没有用。。。。例如

    var headers = { "Accept":"json", 
              "Content-Type":"application/json", 
             };

有人建议吗?

共有3个答案

樊奇思
2023-03-14

我想我已经解决了同样的问题:如何发送一个帖子请求与一个数组的有效载荷由urlfechapp

有效载荷必须以这种方式准备!我在编写PHP脚本时发现了这个解决方案。

  var payload =
      {       
        "fields[0]":"firstString",
        "fields[1]":"anotherString in array",        
      }

不是很直观,但对我来说很有效!

凤修筠
2023-03-14

乔纳森-你建议的评论是解决方案......

这不起作用:

var options =
 {
 "method": 'POST',
 "payload": JSON.stringify(payload)
 };

但是stringify对有效载荷数组元素起作用(注意,简单的元素在没有stringify的情况下起作用,例如“文本”:“这里有一些文本”):

 var nids = [658,71,6,700 ];
 var fields = ['pid','CostPrice','type','published','title']
 var payload =
      { 
      pid : JSON.stringify(nids),
      fields: JSON.stringify(fields)
   };
var options =
 {
 "method": 'POST',
 "payload": payload
 };
松锐藻
2023-03-14
var options = {
  "method":  'POST', 
  "payload": JSON.stringify(payload)
};

或字符串化pid的每个值

 类似资料:
  • 我的的部分当前如下所示: ...这意味着我可以运行来启动服务器。到目前为止还不错。 但是,我希望能够运行类似的东西,并将参数传递给(例如,=>)。这可能吗?

  • 问题内容: 什么是场景 我想从Android向服务器发送多个ArrayList(通常为5个),并将其插入到mysql数据库中。 我成功完成的工作 我已使用JSON成功将Android中的单个值和多个值发送到PHP脚本 我已经使用JSON从mysql数据库到android接收了单条记录和多条记录 这是用于从服务器插入值并从中获取价值的代码 和TeacherAuthen.php脚本 我被困在那里 我没

  • 问题内容: 我想从Linux Shell脚本发送电子邮件。要执行此操作的标准命令是什么,我是否需要设置任何特殊的服务器名称? 问题答案: 如果服务器配置正确,例如它已启动并正在运行MTA,则可以只使用mail命令。 例如,要发送文件的内容,可以执行以下操作: 更多细节。

  • 问题内容: 我正在尝试将消息从后台页面发送到内容脚本,然后将消息从该内容脚本发送到注入的脚本。我已经尝试过了,但是没有用。 这是我的代码的样子。 manifest.json background.js content_script.js injection.js 从第一部分背景-> content_script开始,消息发送不起作用。我的代码有什么问题吗? 问题答案: 由于内容脚本的注入方式,您的

  • 我正在从Bash脚本启动一个名为 的Java代码。Bash 脚本启动 Java 代码,然后运行 Java 代码。在Java程序结束时,我想发送一个信号回到Bash脚本以终止。请记住,Bash 脚本在 PID = 1 的情况下运行。我必须杀死PID 1过程。 我设置了bash脚本,使其在无限循环中运行,并< code >等待终止信号: 我正在使用Docker实例,信号是< code>sigterm。

  • 和我的java代码作为 现在我的Arcticle类是 现在我在排队时例外 system.out.println(user.getRouteFirst()); Gson Gson=新Gson(); typeToken>token=new typeToken>(){};List personList=gson.fromjson(user.getRouteFirst(),token.getType())