我有一组已发布的信息中心,这些信息中心与Google网站相关联。仪表板都是从谷歌电子表格中提取数据,它们是相当基本的 - 主要是可过滤的数据表。这是一个非常大的电子表格,有很多vlookup和一些importrange,一些过滤器公式,一些查询公式......有很多事情发生......通常你会得到“一些公式需要一段时间来处理消息“
如果您打开电子表格,仪表板会很有效。或者,如果其他人打开它。但是,如果您关闭电子表格并等待一段时间,并在电子表格关闭时尝试运行仪表板,则仪表板通常不会提取任何数据。
我怀疑我需要让仪表板等待数据加载一点时间,或者如果可能的话,以某种方式打开“背景”中的电子表格。有什么想法吗?这是我的示例仪表板:
function doGet() {
var ss = SpreadsheetApp.openById("0Aq2VphSIvT4NdE1IRTlzV0NyWF9XZ1hsX2hXZG0xdHc");
var lastrow = ss.getSheetByName('CIC Student Aggregate').getLastRow();
var data = ss.getSheetByName('CIC Student Aggregate').getRange(1, 1, lastrow, 13);
var StudentFilter = Charts.newStringFilter()
.setFilterColumnLabel("Student Name")
.build();
var TotalsFilter = Charts.newNumberRangeFilter()
.setFilterColumnLabel("Total Interactions")
.build();
var tablechart = Charts.newTableChart()
.setDimensions(680, 550)
.setDataViewDefinition(Charts.newDataViewDefinition()
.setColumns([0,1,7,8,9,10,11,12]))
.build();
var piechart = Charts.newPieChart()
.setDimensions(330, 350)
.setDataViewDefinition(Charts.newDataViewDefinition()
.setColumns([0,12]))
.build();
var dashboard = Charts.newDashboardPanel()
.setDataTable(data)
.bind([StudentFilter,TotalsFilter], [tablechart,piechart])
.build();
var uiApp = UiApp.createApplication()
.setTitle("Interactions Totals")
.setWidth(980)
.setHeight(600);
dashboard.add(uiApp.createVerticalPanel()
.add(StudentFilter).add(TotalsFilter)
.setSpacing(1)
.add(uiApp.createHorizontalPanel()
.add(uiApp.createVerticalPanel())
.add(tablechart).add(piechart)
));
uiApp.add(dashboard);
return uiApp;
}
答案 0 :(得分:0)
你还有问题吗?
如果是这种情况,你有一些' importrange'在你的仪表板中?
如果您在通过importrange生成数据的范围内使用appscript读取数据,则在电子表格关闭时它将不返回任何内容。
事实上,' importrange'仅在用户打开电子表格时触发。 Appscript没有触发“导入范围”'在电子表格开放。