【问题标题】:I need a to build a chart/graph with Apps Script that looks like one I hand made in googe sheets我需要一个使用 Apps Script 构建一个图表/图形,看起来像我在 googe 表中手工制作的
【发布时间】:2021-01-27 07:02:56
【问题描述】:

所以下面是我直接在谷歌表格中制作的动态图。它会自动更新。因此,当我想创建报告时,我会使用 Apps 脚本将其转换为图像并将其复制到 google doc 中。

这是我的问题:上图表示基于用户选择的日期范围的累积图。

我现在需要的是在该范围内创建每日图表,以按天分解这些统计数据。因为我不知道他们指定的范围内会有多少天,所以我必须以编程方式构建这些图表,然后将它们插入到谷歌表格中。

我已经想出了如何做到这一点,但是我能够得到的最接近的每日图表如下所示:

我根本找不到使第二个图表看起来与第一个图表相似所需的信息。有人有什么建议可以帮上忙吗?

【问题讨论】:

    标签: google-apps-script google-sheets charts


    【解决方案1】:

    您可以复制现有图表并修改其属性以生成新图表。

    示例代码:

    function insertChart(){
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName("Sheet5");
    
      var charts = sheet.getCharts();
    
      for(var i in charts){
    
        if(charts[i].getOptions().get('title')== 'Types of Incidents Over Time'){
          var chart = charts[i];
          var modifiedChart = chart
              .modify()
              .clearRanges()
              .addRange(sheet.getRange("A25:B29"))
              .setOption('title','New Chart')
              .setOption('vAxis.gridlines', {minSpacing: 2})
              .setOption('vAxis.minorGridlines.count', 1)
              .setPosition(25,5,0,0)
              .build();
            
          sheet.insertChart(modifiedChart);
        }
        
      }
    }
    

    输出:


    它有什么作用?

    1. 使用Sheet.getCharts()获取特定工作表中的所有现有图表

    2. 使用EmbeddedChart.getOptions()ChartOptions.get(option) 根据图表标题选择所需图表。有关柱形图的可用选项列表,请参阅here

    3. 选择所需图表后,您可以使用EmbeddedChart.modify() 修改所选图表的属性。它将返回一个EmbeddedChartBuilder,您可以在其中配置图表的属性。更多信息请参见EmbeddedChartBuilder Methods

    在示例代码中,我在设置新数据范围之前先清除了现有范围。之后,我配置了一些图表选项,例如标题、纵轴网格线最小间距、位置等。

    注意:我必须手动配置 vAxis.gridlines 最小间距,因为当我尝试获取现有图表的 vAxis.gridlines 时,它返回了 null 值。图表选项详细信息在here 讨论。

    1. 配置图表后,您需要使用EmbeddedChartBuilder.build() 构建图表以反映对其所做的所有更改,这将创建一个EmbeddedChart

    2. 使用Sheet.insertChart(chart)插入新创建的EmbeddedChart

    【讨论】:

    • 谢谢罗恩。我最终做了类似的事情,但我发现你的回答非常有帮助;特别是为了填补我知识中的一些剩余空白。我很感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    相关资源
    最近更新 更多