我有一個腳本,它從Google表中獲取所有數據並將其顯示在表中。我在其中包含了幾個類別過濾器,以便用戶能夠選擇他們想要查看的數據。設置要預過濾的Charts.newCategoryFilter()
但是,我現在正在考慮進一步對我的列進行預過濾,以便它只顯示「已關閉」的結果。然後,我將創建該文件的一個副本,並將其更改爲僅顯示「打開」結果。
這可能嗎?請參閱下面我的腳本的簡化版本。作爲參考,這是我想要預過濾的結果過濾器。
function doGet() {
var ss = SpreadsheetApp.openById('spreadsheetkey');
var sheet = ss.getSheetByName('Sheet1')
var data = sheet.getDataRange().getValues();
var dataTable = Charts.newDataTable();
for(var j in data[0])
if (data[23][j] != 'Closed') {
dataTable.addColumn(Charts.ColumnType.STRING, data[0][j]);
for(var i = 1; i < data.length; ++i)
dataTable.addRow(data[i].map(String));
var stageFilter = Charts.newCategoryFilter().setFilterColumnIndex(21).build();
var outcomeFilter = Charts.newCategoryFilter().setFilterColumnIndex(23).build();
//var testFilter = Charts.newCategoryFilter().setFilterColumnIndex(24).build();
//var testFilter2 = Charts.newCategoryFilter().setFilterColumnIndex(25).build();
var tableChart = Charts.newTableChart()
.setDimensions(1900, 2000)
.setDataViewDefinition(Charts.newDataViewDefinition().setColumns([0,1,2,3,4,5,6,7,8,9,10,11/*,12*/,14,15,16,17,18,19,20,21,22,23]))
.build()
;
var dashboard = Charts.newDashboardPanel().setDataTable(dataTable)
.bind([stageFilter, outcomeFilter/*, testFilter, testFilter2*/],[tableChart])
.build();
var app = UiApp.createApplication();
var filterPanel1 = app.createHorizontalPanel();
var filterPanel2 = app.createHorizontalPanel();
var filterPanel3 = app.createHorizontalPanel();
var filterPanel4 = app.createHorizontalPanel();
//var testPanel = app.createHorizontalPanel();
var chartPanel = app.createHorizontalPanel();
filterPanel4.add(stageFilter).add(outcomeFilter).setSpacing(10);
//testPanel.add(testFilter).add(testFilter2).setSpacing(10);
chartPanel.add(tableChart).setSpacing(10);
dashboard.add(app.createVerticalPanel().add(filterPanel1).add(filterPanel2).add(filterPanel3).add(filterPanel4)/*.add(testPanel)*/.add(chartPanel));
app.add(dashboard);
return app;
}
}
這是我的腳本嘗試減少問題大小的絕對骨架。
我也意識到我可能沒有以最好的方式瞭解我的代碼,但我仍然習慣於使用Apps腳本。
編輯 -我已經成功地讓自己一個解決辦法,我在那裏創建兩個表,一個被配製只顯示「關閉」項,另一種被配製只顯示「打開」條目。然後,我創建了一個快速的應用程序腳本,對顯示的記錄Z-A進行排序。
它的工作原理是一個很好的解決方法,但令人討厭的是每次我想犯一個錯誤,我都需要更新兩個文件。 - 編輯
我想這換到別的價值今天以各種格式,主要使用第二種選擇。我的代碼在這裏結束爲: for(var j in data [0]){ if(data [23] [j]!=「Closed」){//我也嘗試創建一個新的var並將其定義爲「關閉」。 //其餘代碼 }; }; 但是,這並不對濾鏡執行任何操作。 – kjexley 2014-09-24 13:55:48
我們需要確切知道哪行代碼無法正常工作。查看**執行轉錄**;使用Logger.log('一些變量名:'+ varName);'然後查看日誌。使用調試器來遍歷代碼。您可以使用您嘗試的任何新代碼更新您的問題。告訴我們爲特定變量返回的內容。發佈您收到的錯誤消息。 – 2014-09-24 14:06:59
我已經更新了第8行和第44行的更改原始問題。當我像這樣運行時,實際上並沒有發生錯誤。它只是顯示'打開'和'關閉'條目 – kjexley 2014-09-24 15:18:34