Как получить правильное изображение ComboChart с Google App Script? - PullRequest
0 голосов
/ 10 мая 2019

У меня есть шаблон SpreadSheet, который содержит внутри ComboChart, один столбец типа серии, другой тип строки.

Когда я пытаюсь экспортировать диаграмму с помощью Google Apps Script, на экспортированном изображении столбцы не отображаются (отображаются в виде линии).

По сути, я открываю лист, изменяю значения в конкретном диапазоне, обновляю диаграмму и затем записываю диаграмму как изображение.

Моя функция скрипта Google Apps:

var hardcodedData = {
  data:  [['Muy Bajo', 0.1, 20],
          ['Bajo', 0.2, 32],
          ['Medio Bajo', 0.15, 51],
          ['Medio', 0.05, 42],
          ['Medio Alto', 0.07, 30],
          ['Alto', 0.23, 15],
          ['Muy Alto', 0.2, 11]],
  fileId : 'id-of-spreadsheet-template'
}

function chartBuilder() {

  var hdd = hardcodedData.data;

  var sp = SpreadsheetApp.openById(hardcodedData.fileId);
  var sh = sp.getSheets()[0];
  sh.getRange('C2:D8').clearContent();

  var clasific = [];
  var ndvi = [];
  var has = [];
  for (var i = 0; i < hdd.length; i++) {
    ndvi    .push([hdd[i][1]]);
    has     .push([hdd[i][2]]);
  }
  sh.getRange(2, 3, 7, 1).setValues(ndvi);
  sh.getRange(2, 4, 7, 1).setValues(has);
  SpreadsheetApp.flush();

  var chart = sh.getCharts()[0];  
  sh.updateChart(chart);
  SpreadsheetApp.flush();

  chart = sh.getCharts()[0];

  var myimage = chart.getAs('image/gif');

  //fill document------------------------------------------
  var doc = DocumentApp.openById('id-of-document')
  doc.getBody().clear();
  var body = doc.getBody();
  body.appendParagraph("");

  body.insertImage(0, myimage)
}

Есть ли способ правильно открыть и экспортировать изображение диаграммы, как оно есть в шаблоне электронной таблицы?

Извините за плохой контекст, у меня нет репутации публиковать изображения.

1 Ответ

0 голосов
/ 11 мая 2019

Сохранение изображений диаграммы в папке в формате png

function saveImage() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');//Sheet where your chart is
  var charts=sh.getCharts();
  var blob=charts[0].getAs('image/png');//just have one
  var folder=DriveApp.getFolderById('FolderId');//folder Id
  folder.createFile(blob).setName('Image Name');//Image name
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...