【问题标题】:Custom function output in rows instead of columns自定义函数以行而不是列输出
【发布时间】:2018-02-24 20:43:01
【问题描述】:

以下脚本以行的形式返回 for 循环中的值。反正有没有将结果返回到相邻的列中?

function readMessage(msgId){
  var url = "https://api.pipedrive.com/v1/mailbox/mailThreads/";
  var token = "/mailMessages?api_token=token";
  Logger.log("readMessage called with msgId: " + msgId);
  if (msgId){ // make sure there is a msgId in the cell 
    var rows = [] 
    var response = UrlFetchApp.fetch(url+msgId+token); 
    var dataAll = JSON.parse(response.getContentText()); 
    var dataSet = dataAll;

    var rows = [], data;

    for (var i = 0; i < dataSet.data.length; i++) {
      data = dataSet.data[i];

      rows.push([data.body_url]);
    } 

    Logger.log( JSON.stringify(rows,null,2) ); 

    return rows;
  }

当前输出是-

   A                  B    C    D
1 =readMessage(msgId)
2 "blah blah"
3 "blah blah"

我想要的是-

   A                       B            C          D
1 =readMessage(msgId) "blah blah"  "blah blah"
2 
3 

【问题讨论】:

    标签: google-apps-script google-sheets custom-function


    【解决方案1】:

    Google Apps 脚本数据始终采用二维数组的形式。可视化很有帮助。

        A   B   C
    1 [[A1, B1, C1],
    2 [A2, B2, C2]]  
    

    为了返回一行数据,函数应该返回

    [[A,B,C]] // 3 columns of data in one row
    

    为了返回一列数据,您可以使用完整的二维数组或单个数组

    [[1],[2],[3]]
    OR
    [1,2,3]
    

    【讨论】:

      【解决方案2】:

      问题在于您返回的数据的格式。试试这个rows.push(data.body_url);

      for (var i = 0; i < dataSet.data.length; i++) {
          data = dataSet.data[i];
      
          rows.push(data.body_url); //Brackets [] have been removed to insert data as a row.
      } 
      

      如果您返回这样的数据:[[1],[3],[6]],结果将是一列值:

      1

      3

      6

      如果你的数据有这种格式:[2,4,8]你会得到一行值:

      2 | 4 | 6

      来源:Custom Function

      【讨论】:

        猜你喜欢
        • 2019-04-16
        • 2020-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-26
        • 1970-01-01
        • 2015-06-01
        • 1970-01-01
        相关资源
        最近更新 更多