google-apps-script - 使用谷歌应用程序脚本图表服务创建图表会产生低质量的图像
问题描述
当我以编程方式创建图表、转换为图像并附加到文档时,图像的质量不如直接在文档上创建的(手动)。
有什么想法可以解决吗?
这就是我创建它的方式
var dataTable = Charts.newDataTable()
.addColumn(Charts.ColumnType.STRING, 'Área')
.addColumn(Charts.ColumnType.NUMBER, '# sessões')
var i = 1;
var extra = 0;
var data = []
for(var r in users_sessions_area) {
var current = users_sessions_area[r]
if(i <= 5 && current.area && current.area != '') {
dataTable.addRow([current.area, Number(current.sessions)]);
data.push([current.area, Number(current.sessions)]);
} else {
extra += Number(current.sessions);
}
i++;
}
if(extra > 0) {
dataTable.addRow(["Outras", extra]);
data.push(["Outras", extra]);
}
sheet.getRange("A2:B" + (data.length + 1)).setValues(data);
var chart = sheet.getCharts()[0];
var graphData = Charts.newPieChart().setDataTable(dataTable);
graphData.setTitle("% sobre o total de sessões");
graphData.setLegendPosition(Charts.Position.BOTTOM);
var chart = graphData.build();
return chart.getAs('image/png');
然后将其添加到文档中
body.findText("%%SESSION_AREAS_CHART%%").getElement().getParent().asParagraph().appendInlineImage(createSessionsPerAreaChart(variables));
解决方案
- 您想以高分辨率将图表图像放入 Google 文档中。
- 您想使用 Google Apps 脚本实现此目的。
如果我的理解是正确的,这个答案怎么样?请认为这只是几个可能的答案之一。
问题和解决方法:
不幸的是,在默认设置下,当图表作为图像块检索时,分辨率很低。因此,在这种情况下,需要在将图表设置为高分辨率后,将图表作为图像 blob 进行检索。通过这种方式,图表可以作为高分辨率的图像放入谷歌文档。
为了为图表设置高分辨率,在这个答案中,它使用setDimensions()
. 使用setDimensions()
时,图表大小可以做得很大。但是字体大小不会自动设置为大。所以还需要设置字体大小。
修改后的脚本:
当您的脚本被修改时,请进行如下修改。
从:
var chart = graphData.build();
到:
var chart = graphData.setDimensions(1000, 1000).setOption("fontSize", 40).build();
和
从:
body.findText("%%SESSION_AREAS_CHART%%").getElement().getParent().asParagraph().appendInlineImage(createSessionsPerAreaChart(variables));
到:
var image = body.findText("%%SESSION_AREAS_CHART%%").getElement().getParent().asParagraph().appendInlineImage(createSessionsPerAreaChart(variables));
image.setWidth(500).setHeight(500);
笔记:
- 在上述修改后的脚本中,作为测试用例,基本分辨率设置为 1000 x 1000 像素。字体大小为 40。通过设置为 500 x 500 像素,将检索到的图像放入 Google 文档。
- 关于这一点,请根据您的实际情况进行修改。
- 如果要独立更改图表中标题和图例的字体大小,也可以使用
setTitleTextStyle()
和setLegendTextStyle()
。 - 如果您想将以上反映到其他图表,可能需要修改其他参数。所以请注意这一点。
参考:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
推荐阅读
- fortran - 处理无限多态虚拟参数的单个元素时选择了错误的列
- asp.net-core - 将父 ViewData 发送到在 javascript 中呈现的 Partial
- clickhouse - Clickhouse kafka 引擎 - 如何将带有解析错误的消息移动到不同的队列
- python-3.x - 在python列表中追加函数vs逗号追加
- gorilla - Echo Web 框架与现有 Gorilla Mux API 的集成
- vue.js - 在Vue中将{{}}内的值拆分为多行(源代码)
- javascript - 砖石元素的 50% 宽度
- arrays - 在matlab中对数组的分区求和
- android - Firebase 实时数据库和 Kotlin 协程
- python - 如何通过终端将 .py 脚本拖放到 python shell 上而不会出现语法错误?