繁体   English   中英

使用GAS将电子表格中的图表图像插入文档中

[英]Inserting chart images from Spreadsheet into Document using GAS

电子表格中包含的我的脚本会创建一个新的文档,并根据电子表格数据插入表格和段落。 我还想将脚本中的图表(或这些图表的jpg图像)插入到文档中。 似乎有可能,但不起作用。 这是我的代码:

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()
}

结果是一个空白容器结果(和我登录的课程),显示“用户未登录”。

我一直在寻找文档,示例或教程,但没有任何运气。 这有没有可能……似乎是一个基本要求……能够在文档中包含图表,但这也许就是我吗?

我将非常感谢您的任何建议或为我提供好的文档指导。

最终的解决方案是重建图表。 这是一个例子:

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);
}

(2017年5月)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()
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM