0

やあ、まず私の英語が下手でごめんなさい。私の問題を理解してくれることを願っています。Google サイトのスプレッドシートのデータを表示したいのです。実際、スプレッドシートのデータを「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 を使用できますか?)前に作成した dataTable で clickhanlder 関数を使用して、さまざまなカテゴリのチェックボックスを使用して独自のフィルターを作成することにしました。私の問題は、他の関数 (clickhandler-chekbox) から dataTable のデータにアクセスする方法がわからないことです。

4

1 に答える 1

0

この問題は再現できましたが、バグのようです。更新については、 Issue Trackerで問題を報告してください。

于 2012-08-10T18:34:58.573 に答える