Есть ли возможность импортировать диаграмму из гугл листов в новый файл с макросом? - PullRequest
0 голосов
/ 11 ноября 2019

Я хочу импортировать графическую оценку (диаграмму) в новый файл с помощью макроса. Таким образом, оценку не следует вставлять на новый лист в связанном файле, но следует создать совершенно новый файл, в который затем копируется графическая оценка (в форме комбинированной диаграммы). Файл должен быть либо Google Sheets, либо файлом Excel. Диаграмма комбинации уже существует и находится на листе Google, но ее нужно автоматически скопировать в новый файл с помощью макроса и соответствующей кнопки.

Я уже пытался запустить макрос и открылновый файл и скопировал диаграмму, но он только показал этот код, который довольно бесполезен:

function AuswertungTest() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('B25').activate();
};

Было бы очень любезно с вашей стороны помочь мне с этой проблемой! :)

1 Ответ

0 голосов
/ 12 ноября 2019

В зависимости от того, как вы хотите вставить диаграмму / диаграмму во вновь созданную электронную таблицу, у меня есть два решения с использованием методов Sheet [1] и EmbeddedChart [2]:

1) Если вы хотите преобразоватьПеред вставкой диаграммы в изображение:

function AuswertungTest() {
  //Sheet with diagram
  var sheet = SpreadsheetApp.getActiveSheet();

  //Create new Spreadsheet in Drive and get its first Sheet
  var newSpreadsheet = SpreadsheetApp.create("new spreadsheet");
  var newSheet = newSpreadsheet.getSheets()[0];

  //Get the first chart and convert it to an image blob
  var chart = sheet.getCharts()[0];
  chart = chart.getAs('image/jpeg');

  //Insert image in new spreadsheet
  newSheet.insertImage(chart, 2, 2)
};

2) Если вы хотите вставить диаграмму в том виде, как она есть (диаграмма будет зависеть от данных в новой электронной таблице):

function AuswertungTest() {
  //Sheet with diagram
  var sheet = SpreadsheetApp.getActiveSheet();

  //Create new Spreadsheet in Drive and get its first Sheet
  var newSpreadsheet = SpreadsheetApp.create("new spreadsheet");
  var newSheet = newSpreadsheet.getSheets()[0];

  //Get the first chart and modify it to set the wanted position
  var chart = sheet.getCharts()[0];
  chart = chart.modify().setPosition(2, 2, 0, 0).build();

  //Insert chart in new spreadsheet
  newSheet.insertChart(chart); 
};

[1] https://developers.google.com/apps-script/reference/spreadsheet/sheet

[2] https://developers.google.com/apps-script/reference/spreadsheet/embedded-chart

...