除非电子表格处于打开状态,否则Google Apps脚本已发布的信息中心不会加载数据

时间:2012-11-15 00:41:45

标签: charts google-apps-script

我有一组已发布的信息中心,这些信息中心与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;
}

1 个答案:

答案 0 :(得分:0)

你还有问题吗?

如果是这种情况,你有一些' importrange'在你的仪表板中?

如果您在通过importrange生成数据的范围内使用appscript读取数据,则在电子表格关闭时它将不返回任何内容。

事实上,' importrange'仅在用户打开电子表格时触发。 Appscript没有触发“导入范围”'在电子表格开放。