技术问题:通过Apps Script无法更新饼图切片的“距离圆心”和“颜色”
我正在寻求关于在Google表格中使用Apps Script时饼图出现的持续性技术问题的帮助。
问题: 当我尝试通过编程方式更新饼图时,某些视觉元素可以正确更新(例如 图表标题 和 环形洞的大小),但界面中的其他元素仍保持不变。
具体而言,以下选项在视觉上无法呈现:
- 距离中心的偏移量(offset): 该切片没有从中心移动/“爆炸”出来。
- 切片颜色: 应用于某个切片的具体颜色被忽略,仍保持默认主题颜色。
观察结果:
- 这不是脚本错误,因为在同一次执行中,其他属性(如标题)可以成功更改。
- 通过图表编辑器进行的手动调整工作正常,这表明问题与API如何处理“slices”配置对象有关。
- 我已尝试刷新页面并清除缓存,但切片的可视状态仍然卡住。
是否有人遇到过这样的行为:只有某些图表属性无法与UI同步?是否有已知的变通方法,可以强制重新绘制这些特定的切片属性?
感谢您的时间与帮助。
以下是我创建图表的代码:
/**
* Minimal Reproducible Example:
* Creates test data and attempts to build a Pie Chart with a slice offset.
*/
function createPieWithOffsetMCVE() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("Test") || ss.insertSheet("Test");
// 1. Prepare Test Data
sheet.clear();
const testData = [
["Group A", 10],
["Group B", 20],
["Group C", 30]
];
sheet.getRange(1, 1, 3, 2).setValues(testData);
// 2. Ensure enough space (Avoid "Out of Bounds" error)
if (sheet.getMaxRows() < 20) sheet.insertRowsAfter(sheet.getMaxRows(), 10);
if (sheet.getMaxColumns() < 10) sheet.insertColumnsAfter(sheet.getMaxColumns(), 5);
// 3. Clean up existing charts
const charts = sheet.getCharts();
charts.forEach(c => sheet.removeChart(c));
// 4. Define Slice Options (The core issue: offset is ignored)
const sliceOptions = {
0: { offset: 0.25, color: '#FF0000' }, // Expected: 25% distance from center
1: { offset: 0, color: '#3366CC' },
2: { offset: 0, color: '#DC3912' }
};
// 5. Build Chart
const chartBuilder = sheet.newChart()
.setChartType(Charts.ChartType.PIE)
.addRange(sheet.getRange("A1:B3"))
.setPosition(5, 1, 0, 0)
.setOption('title', 'Offset Bug Test')
.setOption('is3D', true)
.setOption('pieHole', 0.4)
.setOption('slices', sliceOptions)
.setOption('useFirstRowAsHeaders', false)
.build();
sheet.insertChart(chartBuilder);
Logger.log("Chart created. Slice 0 should have 0.25 offset, but it stays at center.");
}
解决方案
显然,Spreadsheet服务(类SpreadsheetApp)和高级Sheets服务无法为Google表格中的嵌入式图表设置切片选项:
- 当尝试获取嵌入到电子表格中的饼图的
slices选项时,会返回null。 - PieChartSpec 不包含
slices属性。
部分解决方法
关于设置切片颜色,请使用 .setOption('colors', ['green','orange','purple'])。参见 如何在google apps script中为饼图设置颜色。
变通方法
如果你确实需要创建带有切片偏移的饼图,可以使用Google图表(HTML/CSS/JavaScript)。有关详细信息,请参阅 https://developers.google.com/chart,更具体地,请参阅 https://developers.google.com/chart/interactive/docs/gallery/piechart
此问题此前在Stack Overflow上有帖:在google apps script中设置选项 'Color' 不起作用?(饼图构建器)
注:Google Apps Script的 HTML服务可用于显示一个Google图表。
相关
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。