Как изменить положение диаграммы в Google Sheets? - PullRequest
0 голосов
/ 18 сентября 2019

В настоящее время у меня есть сценарий, который берет данные, форматирует их и создает диаграмму под данными.

Я знаю, как перемещать диаграмму во вкладке с помощью 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'}}
    });
  }

1 Ответ

1 голос
/ 19 сентября 2019

Код, который вы предоставили, не распространяется ни на самом деле, ни при построении диаграммы, ни когда вы вставляете ее в лист.

Когда вы создаете EmbeddedChartBuilder, вызывая метод sheet.newChart(), у вас есть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.

. Когда я выполняю вышеуказанную функцию, диаграмма помещается в лист chart на основе данных, извлеченных из листа data.

...