嗨,首先抱歉我的英语不好,我希望你能理解我的问题,我想在谷歌网站上显示电子表格中的数据。实际上,我将电子表格中的数据放在“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)