谷歌表格 v4 API。如何在柱形图中添加误差线?

问题描述 投票:0回答:1

我正在按照示例代码创建谷歌电子表格和内部图表https://developers.google.com/sheets/api/samples/charts

我没有在 BasicChartSpec https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/charts#BasicChartSpec 或内部 https://developers.google.com/sheets 找到属性/api/reference/rest/v4/spreadsheets/charts#BasicChartSeries 了解如何启用错误栏。

我正在使用 python 创建电子表格。

API 尚不支持显示“错误栏”吗?感谢任何帮助。

谢谢你。

python-3.x google-sheets-api
1个回答
0
投票

我相信您的目标如下。

  • 您想要使用 Sheets API 和 Python 将误差线设置为 Google 电子表格上的基本图表。

问题和解决方法:

现阶段,Sheets API 的基本图表似乎没有设置误差线的属性。所以,不幸的是,你的问题

Is showing "Error Bars" not yet supported from the API?
的答案是肯定的。

但是,幸运的是,当使用 Google Apps 脚本时,可以将误差线设置为基本图表。在此答案中,我想提出一种通过 Python 使用 Google Apps 脚本的解决方法。

Google Apps Script 和 Python 的示例脚本如下。

用途:

1.准备电子表格

请准备一个 Google 电子表格并打开脚本编辑器。并且,请设置您的图表。

在此答案中,我使用了由您提供的 URL 中的请求正文创建的图表 https://developers.google.com/sheets/api/samples/charts .

2.谷歌应用脚本

请将以下示例脚本复制并粘贴到脚本编辑器。

  if (!e) {
    console.error("No event object");
    return ContentService.createTextOutput("No event object");
  }
  let { spreadsheetId, sheetName, chartId } = e.parameter;
  const sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
  let chart;
  if (chartId) {
    chart = sheet.getCharts().find(c => c.getChartId() == chartId)
  } else {
    chart = sheet.getCharts()[0];
    chartId = chart.getChartId();
  }
  const chartObj = Sheets.Spreadsheets.get(spreadsheetId, { ranges: [sheetName], fields: "sheets(charts)" }).sheets[0].charts.find(c => c.chartId == chartId);
  if (!chartObj) {
    return ContentService.createTextOutput("No chart.");
  }
  const { series } = chartObj.spec.basicChart;
  const containerInfo = chart.getContainerInfo();
  const c = chart.modify();
  if (containerInfo.getAnchorColumn() == 0 && containerInfo.getAnchorRow() == 0) {
    c.setPosition(1, 1, 0, 0);
  }
  series.forEach((_, i) => c.setOption("series", { [i]: { errorBars: { errorType: "percent" } } }));
  sheet.updateChart(c.build());
  return ContentService.createTextOutput("Done.");
}

3.部署网络应用程序

详细信息可以看官方文档

请使用脚本编辑器进行设置。

  1. 在脚本编辑器中,请点击脚本编辑器右上角的“单击部署”->“新建部署”。
  2. 请点击“选择类型”->“Web App”。
  3. 请在“部署配置”字段中输入Web App的信息。
  4. 请为“执行为”选择“我”
  5. 请为“谁有权访问该应用程序:”选择“任何人”
    • 在此示例中,作为一种简单的方法,无需访问令牌即可完成请求。
  6. 请点击“部署”按钮。
  7. 在脚本编辑器中,请点击脚本编辑器右上角的“单击部署”->“测试部署”。
  8. 复制 Web 应用程序 URL。就像
    https://script.google.com/macros/s/###/exec

4.测试

为了测试这一点,请使用以下 Python 脚本。请将您的 Web 应用程序 URL 设置为

webAppsUrl
。并且,请将您的电子表格 ID、工作表名称和图表 ID 设置为
params
。使用
chartId
时,将使用图表 ID 选择图表。不使用
chartId
时,将自动使用该表的第 1 个图表。

import requests

webAppsUrl = "https://script.google.com/macros/s/###/exec"
params = {
    "spreadsheetId": "###", // Please set your Spreadsheet ID.
    "sheetName": "Sheet1", // Please set your sheet name.
    # "chartId": "###", // Please set your chart ID, if you want to use the chart ID.
}
res = requests.get(webAppsUrl, params=params)
print(res.text)

运行此脚本时,当正确部署上述 Web 应用程序时,错误栏将设置为图表,如下所示。

来自:

enter image description here

致:

enter image description here

注:

参考资料:

© www.soinside.com 2019 - 2024. All rights reserved.