Google apps script 我需要一个应用程序脚本来构建一个图表/图表,这个脚本看起来就像我在谷歌工作表中手工制作的一样

Google apps script 我需要一个应用程序脚本来构建一个图表/图表,这个脚本看起来就像我在谷歌工作表中手工制作的一样,google-apps-script,google-sheets,charts,Google Apps Script,Google Sheets,Charts,下面是我直接在谷歌表单上制作的动态图表。它会自动更新。所以,当我想要创建一个报告时,我使用应用程序脚本将其转换为图像,并将其复制到谷歌文档中 这是我的问题:上面的图表示一个基于用户选择的日期范围的累积图 我现在需要的是在这个范围内创建每日图表,以按天分解这些统计数据。因为我永远不知道有多少天会在它们指定的范围内,所以我必须以编程方式构建这些图,然后将它们插入到google工作表中 我已经知道了如何做到这一点,但我能做的最接近的是使每日图表看起来像上面的一个,如下所示: 我根本找不到使第二张图

下面是我直接在谷歌表单上制作的动态图表。它会自动更新。所以,当我想要创建一个报告时,我使用应用程序脚本将其转换为图像,并将其复制到谷歌文档中

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

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

我已经知道了如何做到这一点,但我能做的最接近的是使每日图表看起来像上面的一个,如下所示:


我根本找不到使第二张图表看起来与第一张相似所需的信息。任何人都有可能有所帮助的建议吗?

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

示例代码:

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);
    }
    
  }
}
输出:

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);
    }
    
  }
}


它是干什么的?
  • 使用获取特定工作表中的所有现有图表

  • 使用和根据图表标题选择所需图表。有关柱形图可用选项的列表,请参阅

  • 选择所需图表后,可以使用修改所选图表的属性。它将返回一个对话框,您可以在其中配置图表的属性。有关更多信息,请参阅

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

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

  • 配置图表后,您需要构建图表以反映对其所做的所有更改,使用这些更改将创建一个

  • 插入新创建的


  • 谢谢你,罗恩。我最终做了类似的事情,但我发现你的回答非常有用;特别是为了填补我知识上的一些空白。我很感激。欢迎,很乐意帮忙