【问题标题】:Build google chart by using google script and query function使用谷歌脚本和查询功能构建谷歌图表
【发布时间】:2017-10-23 19:47:32
【问题描述】:

从电子表格和使用谷歌脚本,

我正在尝试使用“查询”功能从具有条件(位置)的特定工作表中选择一系列数据。但我不想使用新的选定数据范围重新生成另一张工作表。

接下来,我想从同一个电子表格的另一个工作表中构建/更新图表。

我没有找到办法。

谢谢

【问题讨论】:

  • 您是否尝试过使用Charts ServiceClass EmbeddedChart
  • 这是个好问题。我只是想出有两种制作图表的方法:Charts Service 和 Class EmbeddedChart。我认为不可能使用 Charts Service 在工作表中构建它,所以我想我应该使用 EmbededChart。但是有了那个,提供数据来构建图表的唯一方法是提供 Range。所以我没有选择从另一张表中的数据表中提取数据。我不喜欢它,因为数据是多余的并且使电子表格更重。使用 Charts Service 可以加载过滤后的数据,但不能将其插入到电子表格中,只能在仪表板中
  • 由于查询没有给你一个范围,你可以创建一个过滤函数来获取现有工作表上所需数据的范围,并将其提供给 EmbeddedChart 类。

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


【解决方案1】:

我编写了一个示例代码来完成您的请求。此代码使用Embedded Chart 类从使用QUERY 的公式制作的表格中创建图表。此代码将首先设置公式,然后检测结果表的范围,然后使用该范围在同一电子表格的另一张表上创建图表。

我使用了一个包含两列的示例表,我从中搜索了第二列中值大于 499 的表。这是代码:

function buildChart() {
  var dataSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
  var graphSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[1];
  var searchTable = dataSheet.getRange('D1').setFormula(
    '=QUERY(A1:B100,"SELECT A, B WHERE B > 499",1)');
  var searchTableRows = dataSheet.getRange('D1').getDataRegion(SpreadsheetApp
    .Dimension.ROWS);
  var searchTableRange = searchTableRows.getDataRegion(SpreadsheetApp.Dimension
    .COLUMNS);
  var chartBuilder = dataSheet.newChart();

  chartBuilder.addRange(searchTableRange).setChartType(Charts.ChartType.LINE)
    .setOption('title', "MarcoBros_'s Chart").setPosition(1, 1, 0, 0);
  graphSheet.insertChart(chartBuilder.build());
}

由于这只是一个示例,您必须对其进行一些修改以使其适应您的项目。如果您需要帮助或者您对代码有任何疑问,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多