0

嗨,首先抱歉我的英语不好,我希望你能理解我的问题,我想在谷歌网站上显示电子表格中的数据。实际上,我将电子表格中的数据放在“newDataTable”中,效果很好。

    var docOrganismesPubliques =     SpreadsheetApp.openById("XXXXXXXSpreadsheetKeyXXXXXXX"); // key du document : "OpenData Organisme Public"    
  var docOpenDataEnFrance = SpreadsheetApp.openById("XXXXXXXSpreadsheetKeyXXXXXXX"); // key du document : "OpenData en France"

  var docs = new Array();
  docs[0] = docOpenDataEnFrance;
  docs[1] = docOrganismesPubliques;


  var enTetesCrees = false;
  for(var m=0; m <docs.length; m++) { 
  var sheetsTotalParDoc = docs[m].getSheets();

  if (!enTetesCrees) {

      var rowHeadSheet = sheetsTotalParDoc[0];
      var rows = rowHeadSheet.getRange("A1:L1");
      var valuesRowHead = rows.getValues();

      var rowHead = valuesRowHead[0];              

      data = Charts.newDataTable()
          .addColumn(Charts.ColumnType.STRING, rowHead[0])
          //.addColumn(Charts.ColumnType.STRING, rowHead[1])
          .addColumn(Charts.ColumnType.STRING, rowHead[2])
          .addColumn(Charts.ColumnType.STRING, rowHead[3])
          .addColumn(Charts.ColumnType.STRING, rowHead[4])
          //.addColumn(Charts.ColumnType.STRING, rowHead[5])
          .addColumn(Charts.ColumnType.STRING, rowHead[6])
          //.addColumn(Charts.ColumnType.STRING, rowHead[7])
          //.addColumn(Charts.ColumnType.STRING, rowHead[8])
          .addColumn(Charts.ColumnType.STRING, rowHead[9])
          .addColumn(Charts.ColumnType.STRING, rowHead[10])
          .addColumn(Charts.ColumnType.STRING, rowHead[11])

          enTetesCrees = true;
      /*********************************
      * Fin création en-têtes (colonnes)
      **********************************
      */
    }

  for(var k = 0; k < sheetsTotalParDoc.length; k++) {    

      var sheet = sheetsTotalParDoc[k];   
      var rows = sheet.getDataRange(); //.getRange("A1:L5")
      var numRows = rows.getNumRows();
      var values = rows.getValues();     
    //on commence par la deuxième ligne car la première correspond à l'en-tête
      for (var i = 1; i <= numRows - 1; i++) {
        var valuesRow = values[i];


        var rowTraitee = new Array();
        rowTraitee[0] = valuesRow[0];
        rowTraitee[1] = valuesRow[2];
        rowTraitee[2] = valuesRow[3];
        rowTraitee[3] = valuesRow[4];
        rowTraitee[4] = valuesRow[6];
        rowTraitee[5] = valuesRow[9];
        rowTraitee[6] = valuesRow[10];
        rowTraitee[7] = valuesRow[11];

        data.addRow([rowTraitee[0],rowTraitee[1],rowTraitee[2],rowTraitee[3],rowTraitee[4],rowTraitee[5],rowTraitee[6],rowTraitee[7]]);

      }
  } //fin "for" qui parcours chaque feuille d'un spreadsheet

} //fin "for" qui parcours chaque document spreadsheet

  data.build();

然后我尝试使用 GAS 过滤器按类别过滤列:

      var themeFilter = Charts.newStringFilter()
  .setFilterColumnIndex(5)
  .setMatchType(Charts.MatchType.ANY)
 .setCaseSensitive(true)
  .build();

但是,有一个问题,setMatchType(Charts.MatchType.ANY) 不起作用,我不知道为什么.. 它在 java 脚本选项上运行良好:“matchType”:'any'(我可以在 gs 上使用 js 吗?)所以我决定使用 clickhanlder 函数构建我自己的过滤器,其中包含不同类别的复选框,以在我刚刚创建的数据表中查找(“字符串”)。我的问题是,我不知道如何从其他函数访问 dataTable 的数据(clickhandler-chekbox)

4

1 回答 1

0

我能够复制这个问题,它似乎是一个错误。请在问题跟踪器上提交问题以获取更新。

于 2012-08-10T18:34:58.573 回答