【发布时间】:2019-07-25 15:52:44
【问题描述】:
目前我的代码执行后遇到两个问题:
API call to sheets.spreadsheets.batchUpdate failed with error: Invalid JSON payload received.
Unknown name "fields" at 'requests[0]': Cannot find field.
Invalid value at 'requests[0].update_filter_view.filter.filter_view_id' (TYPE_INT32), "*" (line 27, file "macros")
第一个问题是我的请求无法识别“字段”——我不知道为什么会这样。
第二个问题,也是发布此问题的主要原因是 filterViewId 正在寻找一个整数,而我所引用的只是“*”作为更新工作表中所有过滤器视图的方法。如何将循环集成到我的代码中,以便它获取第一个 filterViewId 并应用请求,然后继续下一个?
function UpdateFilterView() {
var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();
for each (var dataSheet in sheets){
var lastRow = dataSheet.getLastRow();
var lastColumn = dataSheet.getLastColumn();
var sheetId = dataSheet.getSheetId();
var filterSettings = {
"filterViewId": "*",
"range":{
"sheetId": sheetId,
"startRowIndex": 0,
"endRowIndex": lastRow,
"startColumnIndex": 0,
"endColumnIndex": lastColumn
}
}
};
var requests = [{
"fields": "*",
"updateFilterView":{
"filter": filterSettings
}
}];
Sheets.Spreadsheets.batchUpdate({"requests":requests},sheetId);
}
【问题讨论】:
-
我可以问你关于你的问题吗? 1. 在您的脚本中,for 循环似乎不起作用。您要使用最后一个索引的工作表的值吗? 2、关于
How can I integrate a loop into my code so that it Gets the first filterViewId and applies the request and then moves on to the next?,the first filterViewId是什么意思? -
@Tanaike - 1. 是的,我想在每个过滤器视图上同时使用第一行/列索引和最后一行/列索引作为过滤范围,例如,Filtered范围为 A1:AS1453,起始行/列索引应为 0,结束行/结束列应为 lastRow/lastColumn。 2. 这可能很难描述,但 filterViewID 是一个整数,分配给谷歌电子表格的特定工作表上的每个过滤器视图。当您在工作表上选择 filterView 时,此参数将在末尾的 url 中传递,如下所示 '&fvid=##########'
-
感谢您的回复。您希望将 filterView 的一个条件反映到所有 filterView。我可以这样理解。并且可以检索所有 filterView ID。由此,您想从一个 filterView 中检索条件,并希望使用检索到的 filterView 条件更新所有其他 filterView。我的理解正确吗?我为我糟糕的英语水平道歉。
标签: json google-apps-script google-sheets google-sheets-api