【问题标题】:Google App Script: Format data and paste to google sheet谷歌应用脚​​本:格式化数据并粘贴到谷歌表格
【发布时间】:2018-12-03 00:36:35
【问题描述】:

我正在尝试学习 Google App Script,因为我觉得它对我的工作非常有用。我在下面粘贴的数据是我从外部 API 获得的数据,截断的版本显示了过去 14 天我们一个网站的需求和网络访问量。我需要您的帮助来获取这些数据并将其以常规表格格式粘贴到 Google 表格中。

{
"chart": {
    "renderTo": "container"
    , "defaultSeriesType": "line"
}
, "title": {
    "text": "Test data"
}
, "xAxis": {
    "categories": ["2018-11-18 00:00:00", "2018-11-19 00:00:00", "2018-11-20 00:00:00", "2018-11-21 00:00:00", "2018-11-22 00:00:00", "2018-11-23 00:00:00", "2018-11-24 00:00:00", "2018-11-25 00:00:00", "2018-11-26 00:00:00", "2018-11-27 00:00:00", "2018-11-28 00:00:00", "2018-11-29 00:00:00", "2018-11-30 00:00:00", "2018-12-01 00:00:00"]
    , "title": {
        "text": null
    }
    , "labels": {
        "rotation": -90
        , "step": 1
        , "align": "right"
    }
}
, "yAxis": {
    "plotLines": [{
        "value": 0
        , "width": 1
        , "color": "#808080"
    }]
    , "title": {
        "text": null
    }
    , "startOnTick": false
}
, "legend": {
    "symbolPadding": 1
    , "symbolWidth": 10
    , "enabled": true
}
, "plotOptions": {
    "pie": {
        "dataLabels": {
            "enabled": "false"
        }
    }
}
, "series": [{
            "name": "Web Demand"
            , "data": [["2018-11-18 00:00:00", 91829.33], ["2018-11-19 00:00:00", 70922.5], ["2018-11-20 00:00:00", 71637.51], ["2018-11-21 00:00:00", 87323.88], ["2018-11-22 00:00:00", 110634.95], ["2018-11-23 00:00:00", 189215.81], ["2018-11-24 00:00:00", 146681.11], ["2018-11-25 00:00:00", 229967.43], ["2018-11-26 00:00:00", 330220.47], ["2018-11-27 00:00:00", 137886.3], ["2018-11-28 00:00:00", 108642.67], ["2018-11-29 00:00:00", 126365.65], ["2018-11-30 00:00:00", 140458.59], ["2018-12-01 00:00:00", 181448.12]]
        }, {
            "name": "Web Visits"
            , "data": [["2018-11-18 00:00:00", 52167], ["2018-11-19 00:00:00", 39785], ["2018-11-20 00:00:00", 50454], ["2018-11-21 00:00:00", 51053], ["2018-11-22 00:00:00", 59999], ["2018-11-23 00:00:00", 92882], ["2018-11-24 00:00:00", 78601], ["2018-11-25 00:00:00", 99010], ["2018-11-26 00:00:00", 111094], ["2018-11-27 00:00:00", 79914], ["2018-11-28 00:00:00", 51760], ["2018-11-29 00:00:00", 60145], ["2018-11-30 00:00:00", 63811], ["2018-12-01 00:00:00", 65633]]
        },

在我的 python 脚本中,可以使用 pd.read_csv() 将这些数据放入数据框中。我不知道如何使用谷歌应用脚​​本来做到这一点。理想情况下,我希望看到的数据如下所示:

感谢您的帮助!

【问题讨论】:

  • 您可以遍历xAxis.categories 中的每个日期并获取您需要的其他数据,然后您可以使用appendRow 函数将一行写入电子表格。
  • 这不是 csv。你会用pd.read_csv()做什么?
  • 感谢@pariola 的建议!我想我需要创建一个像这样的 for 循环,但我不知道该怎么做。我对 python 很熟悉,但我仍然是 javascript 的初学者。
  • @TheMaster 也许我在 python 中以不同的方式导入它。我在那里使用了 response = requests.post(urls, headers=h, data=params) 。在谷歌应用程序脚本中,我使用了 var response = UrlFetchApp.fetch(urls, options);这会对它的进口方式产生影响吗?我在黑暗中摸索,因为我不确定这里

标签: javascript google-apps-script google-sheets-api


【解决方案1】:

将其用作从外部 API 获取的示例数据

{
  "chart": { "renderTo": "container", "defaultSeriesType": "line" },
  "title": { "text": "Test data" },
  "xAxis": {
    "categories": [
      "2018-11-18 00:00:00",
      "2018-11-19 00:00:00",
      "2018-11-20 00:00:00",
      "2018-11-21 00:00:00",
      "2018-11-22 00:00:00",
      "2018-11-23 00:00:00",
      "2018-11-24 00:00:00",
      "2018-11-25 00:00:00",
      "2018-11-26 00:00:00",
      "2018-11-27 00:00:00",
      "2018-11-28 00:00:00",
      "2018-11-29 00:00:00",
      "2018-11-30 00:00:00",
      "2018-12-01 00:00:00"
    ],
    "title": { "text": null },
    "labels": { "rotation": -90, "step": 1, "align": "right" }
  },
  "yAxis": {
    "plotLines": [{ "value": 0, "width": 1, "color": "#808080" }],
    "title": { "text": null },
    "startOnTick": false
  },
  "legend": { "symbolPadding": 1, "symbolWidth": 10, "enabled": true },
  "plotOptions": { "pie": { "dataLabels": { "enabled": "false" } } },
  "series": [
    {
      "name": "Web Demand",
      "data": [
        ["2018-11-18 00:00:00", 91829.33],
        ["2018-11-19 00:00:00", 70922.5],
        ["2018-11-20 00:00:00", 71637.51],
        ["2018-11-21 00:00:00", 87323.88],
        ["2018-11-22 00:00:00", 110634.95],
        ["2018-11-23 00:00:00", 189215.81],
        ["2018-11-24 00:00:00", 146681.11],
        ["2018-11-25 00:00:00", 229967.43],
        ["2018-11-26 00:00:00", 330220.47],
        ["2018-11-27 00:00:00", 137886.3],
        ["2018-11-28 00:00:00", 108642.67],
        ["2018-11-29 00:00:00", 126365.65],
        ["2018-11-30 00:00:00", 140458.59],
        ["2018-12-01 00:00:00", 181448.12]
      ]
    },
    {
      "name": "Web Visits",
      "data": [
        ["2018-11-18 00:00:00", 52167],
        ["2018-11-19 00:00:00", 39785],
        ["2018-11-20 00:00:00", 50454],
        ["2018-11-21 00:00:00", 51053],
        ["2018-11-22 00:00:00", 59999],
        ["2018-11-23 00:00:00", 92882],
        ["2018-11-24 00:00:00", 78601],
        ["2018-11-25 00:00:00", 99010],
        ["2018-11-26 00:00:00", 111094],
        ["2018-11-27 00:00:00", 79914],
        ["2018-11-28 00:00:00", 51760],
        ["2018-11-29 00:00:00", 60145],
        ["2018-11-30 00:00:00", 63811],
        ["2018-12-01 00:00:00", 65633]
      ]
    }
  ]
}

您可以使用它来提取/格式化您的数据

var abstractRows = {};

//* Web Demand
var webDemand = data.series[0];
for (var a = 0; a < webDemand.data.length; a++) {
  const serie = webDemand.data[a];
  abstractRows[serie[0]] = { web_demand: serie[1] };
}

//* Web Visits
var webVisits = data.series[1];
for (var a = 0; a < webVisits.data.length; a++) {
  const serie = webVisits.data[a];
  abstractRows[serie[0]].web_visits = serie[1];
}

var rows = [];
var keys = Object.keys(abstractRows);
for (var key of keys) {
  var row = abstractRows[key];

  //* Append each row to spreadsheet
  rows.push([key, row.web_demand, row.web_visits]);
}

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2019-04-27
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    相关资源
    最近更新 更多