json - 如何将循环集成到我的代码中,将我的请求应用于每个 filterViewId?
问题描述
目前执行后我的代码遇到两个问题:
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);
}
解决方案
- 您的请求无法识别
fields
,因为fields
需要进入"updateFilterView":{...}
您可以在文档中看到的内容。 - 如果您的过滤器 ID 随着工作表编号的增加而增加(例如
"filterViewId": 1
,对于第一张工作表、"filterViewId": 2
第二张工作表等),您可以分配filterview
一个计数器变量,该变量在每次循环迭代期间增加。
例子:
var i=0;
for each (var dataSheet in sheets){
i++;
...
var filterSettings = {
"filterViewId": i,
...
或者,您也可以用循环替换for each
循环for(var i=1; i<=sheet.length;i++)
- 然后您迭代sheets
并filterview
同时进行。
推荐阅读
- javascript - jquery随机视频背景在Safari中不起作用
- c# - 无法通过 Microsoft Graph 更改/重置 Azure AD 用户密码
- javascript - Android - 隐藏文本光标输入 React Native
- javascript - 根据 jQuery 的 data-* 属性显示/隐藏内容
- javascript - Bootstrap 4 表单验证电子邮件检查使用默认验证
- c++-cli - 在托管 C++ 中正确使用 ^
- hyperledger-fabric - 信任私有/许可的区块链基础设施提供商
- python - 当单击更改密码是空白页但密码已更改 django
- c# - 用于specflow自动化c#的虚拟Windows用户
- javascript - 动态加载 JS 库时出现“未定义”错误