【问题标题】:How to change chart position in Google Sheets?如何更改 Google 表格中的图表位置?
【发布时间】:2019-09-18 20:22:06
【问题描述】:

我目前有一个脚本,用于获取数据、格式化数据并在数据下方创建图表。

我知道如何使用setPosition 在选项卡内移动图表,但不知道如何将图表写入不同的选项卡(创建一个“仪表板”,您不必在其中查看所有源数据)。对此有何想法?

我尝试更改 .setPosition 中的内容,但这只会在现有选项卡中移动图表。

我也遇到了一些小问题,在某些情况下,我让图表移动到数据的右侧,但是在不同的工作表中使用相同的代码,它根本不会写图表。

这是我正在使用的代码:

var chartTitle = columnHeader;
  if (typeof subtitle[columnHeader] != 'undefined') {
    chartTitle = chartTitle + " - " + subtitle[columnHeader];
  }

  var chartBuilder = sheet.newChart()
  .setChartType(Charts.ChartType.LINE)

  .setOption('chartArea', {left:'10%',top:'15%',width:'80%',height:'70%'})
  .setPosition(4 + output.length, 1, 0, 0)
  .setOption('width', width)
  .setOption('height', 500)
  .setOption('title', chartTitle)
  .setOption('legend', {position: 'top'});

  var statFormat = {CPC: 'currency', CTR: 'percent', Impressions: 'decimal', Searches: 'decimal'};

  if (statsInChart.length == 0) {
    chartBuilder.setOption('vAxes', {
      // Adds titles to the axis.
      0: {title: columnHeader} });
  } else if (statsInChart.length == 1) {
    chartBuilder.setOption('vAxes', {
      // Adds titles to both axes.
      0: {title: columnHeader} ,
      1: {title: statsInChart[0], format: statFormat[statsInChart[0]]}});
  } else {
    chartBuilder.setOption('vAxes', {
      // Adds title to the first axis, blanks the others.
      0: {title: columnHeader} ,
      1: {format: statFormat[statsInChart[0]], textPosition: 'in'},
      2: {format: statFormat[statsInChart[1]], textPosition: 'out'},
      3: {textStyle: {color: 'white'}}
    });
  }

【问题讨论】:

  • 我可以问你关于你的问题吗?是否要将现有图表移动到同一电子表格中的其他选项卡?或者您想使用选项卡“A”的数据为选项卡“B”创建新图表?如果是后者,你能提供创建图表的整个脚本吗?当然,请删除您的个人信息。

标签: javascript google-apps-script google-sheets google-visualization


【解决方案1】:

您提供的代码未涵盖您实际构建图表的时间,也未涵盖将其插入工作表的时间。

当您通过调用sheet.newChart() 方法创建EmbeddedChartBuilder 时,您将拥有一个与电子表格中的特定工作表相关联的sheet 对象。

您要做的是使用不同的工作表对象调用insertChart() 方法,该工作表对象与您希望图表出现的工作表相关联。

这是一个小例子:

function createChart() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var dataSheet = ss.getSheetByName('data');
  var chartSheet = ss.getSheetByName('chart');

  var dataRange = dataSheet.getDataRange();

  var chart = chartSheet.newChart()
      .addRange(dataRange)
      .setPosition(1, 1, 0, 0)
      .build();

  chartSheet.insertChart(chart);
}

在我的测试电子表格中,我有两张工作表。一个名为data,它包含一个小数据表。另一个是名为chart的空白纸。

当我执行上述函数时,根据从data 表中提取的数据,在chart 表中放置了一个图表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-13
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2020-12-26
    • 1970-01-01
    • 2019-02-02
    相关资源
    最近更新 更多