我正在谷歌工作表中创建一个条形图,用宏记录它,并针对不同的数据情况运行代码。 当副标题太长时,图表上会缺少文本,以省略号 (...) 显示 增加图表的宽度会显示更多文本,但不是全部。 增加图表的高度没有任何作用! (它显示了一个长标题,但没有显示一个长副标题!)
添加换行符不起作用。使用一个时,我只能看到字幕的第一行,而其他行完全隐藏......
如何才能让字幕显示出我想要显示的所有文本? 鉴于标题在水平轴和垂直轴上都有响应,字幕不响应确实很奇怪。
谢谢
---- 编辑 ----
该脚本有助于自动化操作,但我不认为它添加了新功能。话虽这么说,我使用的代码如下:
function Macro3() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
var chart = sheet.newChart()
.asBarChart()
.addRange(spreadsheet.getActiveRange())
.setMergeStrategy(Charts.ChartMergeStrategy.MERGE_COLUMNS)
.setTransposeRowsAndColumns(false)
.setNumHeaders(4)
.setHiddenDimensionStrategy(Charts.ChartHiddenDimensionStrategy.IGNORE_BOTH)
.setOption('bubble.stroke', '#000000')
.setOption('useFirstColumnAsDomain', true)
.setOption('isStacked', 'false')
.setOption('su', SpreadsheetApp.getActiveSheebtitlet().getRange("B2:B2").getValue())
.setOption('title', SpreadsheetApp.getActiveSheet().getRange("B1:B1").getValue())
.setOption('annotations.domain.textStyle.color', '#808080')
.setOption('textStyle.color', '#000000')
.setOption('legend.textStyle.color', '#1a1a1a')
.setOption('subtitleTextStyle.color', '#999999')
.setOption('titleTextStyle.color', '#757575')
.setOption('annotations.total.textStyle.color', '#808080')
.setXAxisTitle(SpreadsheetApp.getActiveSheet().getRange("B4:B4").getValue())
.setOption('hAxis.textStyle.color', '#000000')
.setYAxisTitle(SpreadsheetApp.getActiveSheet().getRange("A4:A4").getValue())
.setOption('vAxes.0.textStyle.color', '#000000')
.setPosition(2, 1, 30, 0)
.build();
sheet.insertChart(chart);
};
我想包含使用该宏的 Google 表的屏幕截图,但这是我在 stackoverflow 上发表的第一篇文章,显然我需要至少 10 个声誉才能发布图像。 如果您认为分享此屏幕截图会有所帮助并且有一种巧妙的方法,请告诉我。 再次感谢
最佳答案
在当前状态下,无法向 Google 表格图表的副标题添加多行。因此,我建议您转到帮助
> 改进帮助表
并添加此请求。或者,您可以使用此 template请求 Apps 脚本的此功能,例如允许 EmbeddedCharts
标题写有 HTMLService
.
可能的解决方法:
- 根据字符串长度更改字体大小。
正如我在评论中告诉你的,你可以测量字幕的字数,并据此应用不同的字体大小。例如:
function calcFontSize(subtitle){
const lenS = subtitle.split(" ").length
if(lenS > 12) return 8
if(len <= 12) return 12
}
// Inside your macro
.setOption(
'subtitleTextStyle.fontSize',
calcFontSize(sheet.getRange('B2:B2').getValue())
)
优点:您有一个“响应式”字幕。
缺点:正如你所说
在长文本中......文本变得太小而无法阅读
- 使用Charts Service创建您的图表
由于此服务允许您在标题中添加跳线,因此您可以实现您想要的:
function createGoogleChart() {
// extracted from here https://developers.google.com/apps-script/reference/charts/charts
const data = Charts.newDataTable()
.addColumn(Charts.ColumnType.STRING, 'Month')
.addColumn(Charts.ColumnType.NUMBER, 'In Store')
.addColumn(Charts.ColumnType.NUMBER, 'Online')
.addRow(['January', 10, 1])
.addRow(['February', 12, 1])
.addRow(['March', 20, 2])
.addRow(['April', 25, 3])
.addRow(['May', 30, 4])
.build();
const chart = Charts.newAreaChart()
.setDataTable(data)
.setStacked()
.setRange(0, 40)
.setTitle("My title\nMy long long long long long \n long long long long \n subtitle")
.build();
SpreadsheetApp.getActiveSheet().insertImage(
chart.getAs('image/png'), 10, 10
)
}
优点:您可以实现您所需要的。
缺点:
- 您插入静态图像(不可编辑)
- 没有默认字幕选项
- 您必须从 Apps 脚本构建它,并使其适应您的宏
关于google-apps-script - 如何在谷歌表格图表中获得多行副标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72027780/