这是我在这里的第一篇文章,我是编码的新手。我的任务是创建一个自动报告,它会向谷歌表单提交者发送一个图表,以帮助他们监控他们的生产与他们的日常目标。为此,我使用新的开发人员Google工作表脚本来刷新数据透视表。我在网上找到了这个代码,但它很有用,但是,我想添加一行,根据唯一的提交者数据进行过滤。这是我到目前为止的代码:
function updatePivotTable() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var pivotTableSheetName = "Lunch Chart";
var pivotTableSheetId = ss.getSheetByName(pivotTableSheetName).getSheetId();
var fields = "sheets(properties.sheetId,data.rowData.values.pivotTable)";
var sheets = Sheets.Spreadsheets.get(ss.getId(), {fields: fields}).sheets;
for (var i in sheets) {
if (sheets[i].properties.sheetId == pivotTableSheetId) {
var pivotTableParams = sheets[i].data[0].rowData[0].values[0].pivotTable;
break;
}
}
// Update source range:
pivotTableParams.source.endRowIndex = 40;
// Send back the updated params
var request = {
"updateCells": {
"rows": {
"values": [{
"pivotTable": pivotTableParams
}]
},
"start": {
"sheetId": pivotTableSheetId
},
"fields": "pivotTable"
}
};
Sheets.Spreadsheets.batchUpdate({'requests': [request]}, ss.getId());
}
这可能吗?我在哪里添加过滤器?我在谷歌开发者网站上发现了这个,但我对编码很新,所以我不知道该把它放在哪里或如何让它有条件。 https://developers.google.com/sheets/api/reference/rest/v4/FilterCriteria
谢谢!
答案 0 :(得分:0)
我不确定这是否仍与您相关,但您可以使用以下代码添加过滤器 -
"criteria": {
<col_index>: {"visibleValues": <filter criteria>},
<col_index>: {"visibleValues": <filter criteria>},
答案 1 :(得分:0)
我遇到了同样的问题,没有找到简单的解释或代码。这是我所做的并且可以正常工作:
function updatePivotTable() {
var ss = SpreadsheetApp.openById(SHEET_ID);
var pivotTableSheetName = "Pivot";
var pivotTableSheetId = ss.getSheetByName(pivotTableSheetName).getSheetId();
var fields = "sheets(properties.sheetId,data.rowData.values.pivotTable)";
var sheets = Sheets.Spreadsheets.get(ss.getId(), {fields: fields}).sheets;
for (var i in sheets) {
if (sheets[i].properties.sheetId == pivotTableSheetId) {
var pivotTableParams = sheets[i].data[0].rowData[0].values[0].pivotTable;
break;
}
}
// Update source range:
pivotTableParams.source.endRowIndex = 111;
pivotTableParams.criteria = { 3: {"visibleValues": ["foo"]}};
// Send back the updated params
var request = {
"updateCells": {
"rows": {
"values": [{
"pivotTable": pivotTableParams
}]
},
"start": {
"sheetId": pivotTableSheetId
},
"fields": "pivotTable",
}
};
Sheets.Spreadsheets.batchUpdate({'requests': [request]}, ss.getId());
}
因此,基本上,您需要将条件作为pivotTableParams传递,其中对象的键是要查询的列的索引,并且值应作为另一个对象传递,格式为{"visibleValues": ["foo"]}
。 / p>