这听起来可能是一个愚蠢的问题,但我在网上搜索了很多,但我找不到我想要的东西......
我已经设法从不同电子表格中的数据构建我想要显示的图表,我想将图表插入电子表格而不必将数据粘贴到工作表上。这可能吗 ?
我也可以使用UIApp来显示它,但是我希望它能够显示在电子表格中,而无需通过菜单或按钮调用它。
感谢您的帮助,
edelans
- 到目前为止,这是我的代码,它正如我在调试器工具上看到的那样工作
function BuildMTChart(){
var ss = SpreadsheetApp.getActiveSpreadsheet()
var DataChart = MTLastMonth() // MTLastMonth() returns an array with the data I need
var dSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Dashboard");
var dataTable = Charts.newDataTable();
dataTable.addColumn(Charts.ColumnType['DATE'], 'Date');
dataTable.addColumn(Charts.ColumnType['NUMBER'], 'Maintenance');
dataTable.addColumn(Charts.ColumnType['NUMBER'], 'Troubleshooting');
for ( var i = 0; i < DataChart.length; i++) {
dataTable.addRow([DataChart[i][0], DataChart[i][1], DataChart[i][2]]);
}
dataTable.build();
var chart = Charts.newAreaChart()
.setDataTable(dataTable)
.setDimensions(800, 400)
.setYAxisTitle("Hours")
.setXAxisTitle("Date")
.build();
答案 0 :(得分:1)
EmbeddedChartBuilder 曾经有 setDataTable 方法。但我无法使它发挥作用。
据我了解,您可以从脚本中将图表添加到电子表格中,但是那些需要将数据放在电子表格中:
var chart = workingSheet.newChart()
.setChartType(Charts.ChartType.COLUMN)
.setPosition(8, 2, 0, 0)
.setTitle("Sample chart")
.setXAxisTitle("...")
.setYAxisTitle("...")
.addRange(range) // This could be smth. like SpreadsheetApp.getActiveSpreadsheet().getRange("B2:C8")
.build();
SpreadsheetApp.getActiveSpreadsheet().insertChart(chart);
Here it says您可以设置一些高级图表选项。也许有办法在那里传递DataTable?
现在我建议使用您的数据填充电子表格,然后根据范围添加图表。如果您不希望在Google文档中显示此数据,则可以隐藏列或将其移至新工作表。
答案 1 :(得分:0)
您可以将此添加到UiApp,正确调整大小并设置触发器,以便每次打开电子表格时都会显示UI应用程序吗?像这样的东西。 `function onOpen(){ return myUiApp(); }
function myUiApp(){ //构建图表并将其添加到应用程序的所有代码 }`