gpt4 book ai didi

google-apps-script - 在 EmbeddedChart 中切换行和列

转载 作者:行者123 更新时间:2023-12-04 22:33:37 24 4
gpt4 key购买 nike

我正在使用 Google Docs 和 Google Apps Script 为我们的 sprint 制作一些自动生成的报告。

我想在我的工作表中添加一个图表,使用以下代码一切正常:

    var lChartBuilder = SpreadsheetApp.getActiveSheet().newChart();
lChartBuilder.addRange(SpreadsheetApp.getActive().getRange("Tasks!C39:S40"));
lChartBuilder.setOption("title", "Task Burndown");

var lChart = lChartBuilder.asLineChart().build();
SpreadsheetApp.getActiveSheet().insertChart(lChart);

但是我的系列是水平组织的,而不是垂直的。在编辑器中,我看到了“切换行/列”选项和另一个选项“使用 C 列作为标签”
我尝试了很多选项(如 lChartBuilder.setOption("reverseCategories", true);lChartBuilder.setOption("isStacked", true); ),但我担心它们似乎都与最后一个选项卡有关,而不是“开始”选项卡。

那么,有没有办法(除了转置我的数据)来做到这一点,或者每次生成图表编辑器时都必须手动启动图表编辑器来解决这个问题?

额外问题:然后我如何设置(也通过 Google Apps 脚本)第一行/列是标题并用作图例?

最佳答案

对于嵌入图表,您需要转置数据,因为嵌入图表使用电子表格数据,并且本身不支持转置。但是,您可以通过编程方式处理此问题,并且转置操作本身很简单。

在下面的代码中,我假设存在一个名为“Scratch”的工作表,它将用于存储转置数据的工作副本。您可以创建然后隐藏此工作表,使其不碍事。

// Uses 2D Arrays Library, see https://sites.google.com/site/scriptsexamples/custom-methods/2d-arrays-library

function buildChart() {
var taskSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Tasks");
var lChartBuilder = taskSheet.newChart(); taskSheet.removeChart(chart)
var srcData = taskSheet.getRange("Tasks!C39:S40").getValues();

// Transpose the table (using 2D Array Library)
var scratchData = ArrayLib.transpose(srcData);

var numRows = scratchData.length;
var numCols = scratchData[0].length; // assume all rows are same width

// Write scratch values to scratch sheet.
var scratchSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Scratch");
scratchSheet.getRange(1, 1, numRows, numCols).setValues( scratchData );
SpreadsheetApp.flush();

lChartBuilder.addRange(scratchSheet.getDataRange());
lChartBuilder.setOption("title", "Task Burndown");

var lChart = lChartBuilder.asLineChart().setPosition(1, 1, 1, 1).build();
taskSheet.insertChart(lChart);
};

对于奖金......以这种方式格式化数据可确保第一行/列是标题并用作图例。

现在,您还有一些问题需要解决。
  • 这段代码每次运行时都会创建一个新图表,但您可能想要修改它。 (相反,您需要更新转置数据,并修改图表以选取新范围(如果发生变化)。)
  • X 轴不显示所有任务名称 - 您可以控制它。


  • 你说你不想转置你的数据。不幸的是,目前的 Charts 没有任何办法解决这个问题——你必须自己处理你的数据。插入具有不同图表库的小部件是可行的,但已弃用对表格的小部件支持。幸运的是,我已经有了类似的代码,所以工作量比看起来要少。您应该查看 ArrayLib 中的其他一些过滤功能,您可以使用它做很多事情。

    关于google-apps-script - 在 EmbeddedChart 中切换行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14313725/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com