2014-01-20 3 views
1

Мой скрипт, который содержится в электронной таблице, создает новый документ и вставляет таблицы и параграфы на основе данных таблицы. Я также хотел бы вставить диаграммы (или jpg изображения этих диаграмм) в документ из сценария. Кажется, это возможно, но не работает. Это мой код:Вставка графических изображений из таблицы в документ с использованием GAS

function insertChartImage(){ 
    var charts = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Score Card').getCharts(); 
    var chart = charts[0].getAs('image/png'); // similar result with 'gif' 
    var doc = DocumentApp.openById(documentId); 
    doc.getBody().appendImage(chart);   // similar result with insertImage() 
} 

В результате blank container результат (и, конечно, я подписал в) говоря: «Пользователь не авторизованы».

Я искал во всем мире документацию, примеры или учебные пособия, но без везения. Возможно ли это ... похоже, что такое основное требование ... уметь включать диаграммы в документ, но, возможно, это только я?

Я буду очень признателен за любые советы или указания в направлении хорошей документации.

Возможным решением было перестроить диаграмму. Вот пример:

function insertBarChart(body) { 
    var values = SpreadsheetApp.getActive().getRange("Score!B2:D7").getValues(); 
    var dataTable = Charts.newDataTable() 
     .addColumn(Charts.ColumnType.STRING, values[0][0])  
     .addColumn(Charts.ColumnType.NUMBER, values[0][1])  
     .addColumn(Charts.ColumnType.NUMBER, values[0][2])  
     .addRow(['Ownership', values[1][1], values[1][2]]) 
     .addRow(['Control', values[2][1], values[2][2]])  
     .addRow(['Skills', values[3][1], values[3][2]])  
     .addRow(['Development', values[4][1], values[4][2]]) 
     .addRow(['Social', values[5][1], values[5][2]]) 
     .build(); 
    var chart = Charts.newColumnChart()  
    .setDataTable(dataTable)  
    .setColors(["green", "red"])  
    .setDimensions(600, 400)  
    .setXAxisTitle("Elements")  
    .setYAxisTitle("Points")  
    .setTitle("Profile")  
    .build(); 
    var scale = 0.5; 
    var img = body.appendImage(chart.getAs('image/png')); 
    img.setHeight(img.getHeight()*scale).setWidth(img.getWidth()*scale); 
} 
+0

Я сделал это с помощью Chart API (https://developers.google.com/apps-script/reference/charts/), но вы будете необходимо перестроить диаграмму. – Rcoster

+0

Спасибо ... Я пробовал это. Восстановление графика, как вы предложили, работает. –

ответ

0

(май 2017 года) Google, похоже, исправил это. Ваш исходный код работает для меня и не дает пустых контейнеров:

function insertChartImage(){ 
    var charts = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Score Card').getCharts(); 
    var chart = charts[0].getAs('image/png'); // similar result with 'gif' 
    var doc = DocumentApp.openById(documentId); 
    doc.getBody().appendImage(chart);   // similar result with insertImage() 
} 
Смежные вопросы