如何格式化 Sheets.Spreadsheets.batchUpdate(resource, spreadsheetId) 的资源以创建列组
How to format the resource for Sheets.Spreadsheets.batchUpdate(resource, spreadsheetId) to create a column group
- 我正在尝试创建一个列组。
- 我已启用表格 API 版本 4。
- 我查看了 Sheets API
中的参考资料
使用代码完成我想出了这个代码:
function makeColumnGroup() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet21');
Sheets.Spreadsheets.batchUpdate({"range":[{dimension:"COLUMNS",startIndex:1,endIndex:3,sheetId:sh.getSheetId()}]},ss.getId());
}
我已经经历了几个不同的版本,但就目前而言,我收到了错误:
Invalid JSON payload received. Unknown name "range": Cannot find field. (line 4, file "20181212")
但在 API 参考中显示 JSON 格式的 AddDimensionGroupRequest 如下所示:
{
"range": {
object(DimensionRange)
}
}
DimensionRange 看起来像这样:
{
"sheetId": number,
"dimension": enum(Dimension),
"startIndex": number,
"endIndex": number
}
代码完成建议格式如下:
Sheets.Spreadsheets.batchUpdate(resource, spreadsheetId)
但我似乎无法想出确定该资源格式的神奇公式。过去的经验建议使用 Drive API:
这样的格式
Drive.Files.update({"parents": [{"id": subFldr.getId()}]}, res.getId());
但如果我使用表格建议的格式,这将不起作用 API:
Sheets.Spreadsheets.batchUpdate({"range":{dimension:"COLUMNS",startIndex:1,endIndex:3,sheetId:sh.getSheetId()}},ss.getId());
我收到错误:
Invalid JSON payload received. Unknown name "range": Cannot find field. (line 4, file "20181212")
问题:
如何格式化 resource 参数?
哦,哇,我想通了。这是代码:
function makeColumnGroup() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet21');
var res={
"requests": [
{
"addDimensionGroup": {
"range": {
"dimension": "COLUMNS",
"startIndex": 1,
"endIndex": 3,
"sheetId": 1163414414
}
}
}
]
}
Sheets.Spreadsheets.batchUpdate(res,ss.getId());
}
归结为直接从 API 资源管理器复制代码。以后我会尽量记住这一点。如果知识渊博的志愿者之一有更好的解决方案,我将不加检查。
虽然我不确定这是否对您有用,但作为另一种方法,您也可以使用使用 Sheets of Advanced Google 服务创建请求的方法。当您尝试在脚本编辑器上使用 Sheets of Advanced Google Service 时,您可能会看到一些自动完成的方法。使用此类方法时,可以通过脚本编辑器自动完成来获知所需的参数。所以我认为这会让我们轻松创建请求。作为示例,您的答案中的请求正文可以像此示例一样创建。
示例脚本:
function makeColumnGroup() {
var ss=SpreadsheetApp.getActive();
// Set parameters of addDimensionGroup
var p = Sheets.newAddDimensionGroupRequest();
p.range = Sheets.newGridRange();
p.range.dimension = "COLUMNS";
p.range.startIndex = 1;
p.range.endIndex = 3;
p.range.sheetId = ss.getSheetId();
// Create single request
var req = Sheets.newRequest();
req.addDimensionGroup = p;
// Create batch requests
var batchReq = Sheets.newBatchUpdateSpreadsheetRequest();
batchReq.requests = [req];
// Request
Sheets.Spreadsheets.batchUpdate(batchReq, ss.getId());
}
注:
- 确认
batchReq
后,发现和你的request body一样
- 很遗憾,我找不到与这些方法相关的官方文档。我认为它可能假设用户通过自动完成找到方法。
编辑:
比如在创建群的时候,为了折叠群,这个示例脚本怎么样?在此示例脚本中,它创建了 addDimensionGroup
和 updateDimensionGroup
的请求。这些请求来自 batchUpdate
。
运行
示例脚本:
function makeColumnGroup() {
var ss=SpreadsheetApp.getActive();
// Set range
var range = Sheets.newGridRange();
range.dimension = "COLUMNS";
range.startIndex = 1;
range.endIndex = 3;
range.sheetId = ss.getSheetId();
// Create request of addDimensionGroup
var p1 = Sheets.newAddDimensionGroupRequest();
p1.range = range;
var req1 = Sheets.newRequest();
req1.addDimensionGroup = p1;
// Create request of updateDimensionGroup
var p2 = Sheets.newUpdateDimensionGroupRequest();
p2.dimensionGroup = Sheets.newDimensionGroup();
p2.dimensionGroup.collapsed = true;
p2.dimensionGroup.depth = 1;
p2.dimensionGroup.range = range;
p2.fields = "*";
var req2 = Sheets.newRequest();
req2.updateDimensionGroup = p2;
// Create batch requests
var batchReq = Sheets.newBatchUpdateSpreadsheetRequest();
batchReq.requests = [req1, req2];
// Request
Sheets.Spreadsheets.batchUpdate(batchReq, ss.getId());
}
- 我正在尝试创建一个列组。
- 我已启用表格 API 版本 4。
- 我查看了 Sheets API 中的参考资料
使用代码完成我想出了这个代码:
function makeColumnGroup() { var ss=SpreadsheetApp.getActive(); var sh=ss.getSheetByName('Sheet21'); Sheets.Spreadsheets.batchUpdate({"range":[{dimension:"COLUMNS",startIndex:1,endIndex:3,sheetId:sh.getSheetId()}]},ss.getId()); }
我已经经历了几个不同的版本,但就目前而言,我收到了错误:
Invalid JSON payload received. Unknown name "range": Cannot find field. (line 4, file "20181212")
但在 API 参考中显示 JSON 格式的 AddDimensionGroupRequest 如下所示:
{
"range": {
object(DimensionRange)
}
}
DimensionRange 看起来像这样:
{
"sheetId": number,
"dimension": enum(Dimension),
"startIndex": number,
"endIndex": number
}
代码完成建议格式如下:
Sheets.Spreadsheets.batchUpdate(resource, spreadsheetId)
但我似乎无法想出确定该资源格式的神奇公式。过去的经验建议使用 Drive API:
这样的格式Drive.Files.update({"parents": [{"id": subFldr.getId()}]}, res.getId());
但如果我使用表格建议的格式,这将不起作用 API:
Sheets.Spreadsheets.batchUpdate({"range":{dimension:"COLUMNS",startIndex:1,endIndex:3,sheetId:sh.getSheetId()}},ss.getId());
我收到错误:
Invalid JSON payload received. Unknown name "range": Cannot find field. (line 4, file "20181212")
问题: 如何格式化 resource 参数?
哦,哇,我想通了。这是代码:
function makeColumnGroup() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet21');
var res={
"requests": [
{
"addDimensionGroup": {
"range": {
"dimension": "COLUMNS",
"startIndex": 1,
"endIndex": 3,
"sheetId": 1163414414
}
}
}
]
}
Sheets.Spreadsheets.batchUpdate(res,ss.getId());
}
归结为直接从 API 资源管理器复制代码。以后我会尽量记住这一点。如果知识渊博的志愿者之一有更好的解决方案,我将不加检查。
虽然我不确定这是否对您有用,但作为另一种方法,您也可以使用使用 Sheets of Advanced Google 服务创建请求的方法。当您尝试在脚本编辑器上使用 Sheets of Advanced Google Service 时,您可能会看到一些自动完成的方法。使用此类方法时,可以通过脚本编辑器自动完成来获知所需的参数。所以我认为这会让我们轻松创建请求。作为示例,您的答案中的请求正文可以像此示例一样创建。
示例脚本:
function makeColumnGroup() {
var ss=SpreadsheetApp.getActive();
// Set parameters of addDimensionGroup
var p = Sheets.newAddDimensionGroupRequest();
p.range = Sheets.newGridRange();
p.range.dimension = "COLUMNS";
p.range.startIndex = 1;
p.range.endIndex = 3;
p.range.sheetId = ss.getSheetId();
// Create single request
var req = Sheets.newRequest();
req.addDimensionGroup = p;
// Create batch requests
var batchReq = Sheets.newBatchUpdateSpreadsheetRequest();
batchReq.requests = [req];
// Request
Sheets.Spreadsheets.batchUpdate(batchReq, ss.getId());
}
注:
- 确认
batchReq
后,发现和你的request body一样 - 很遗憾,我找不到与这些方法相关的官方文档。我认为它可能假设用户通过自动完成找到方法。
编辑:
比如在创建群的时候,为了折叠群,这个示例脚本怎么样?在此示例脚本中,它创建了 addDimensionGroup
和 updateDimensionGroup
的请求。这些请求来自 batchUpdate
。
示例脚本:
function makeColumnGroup() {
var ss=SpreadsheetApp.getActive();
// Set range
var range = Sheets.newGridRange();
range.dimension = "COLUMNS";
range.startIndex = 1;
range.endIndex = 3;
range.sheetId = ss.getSheetId();
// Create request of addDimensionGroup
var p1 = Sheets.newAddDimensionGroupRequest();
p1.range = range;
var req1 = Sheets.newRequest();
req1.addDimensionGroup = p1;
// Create request of updateDimensionGroup
var p2 = Sheets.newUpdateDimensionGroupRequest();
p2.dimensionGroup = Sheets.newDimensionGroup();
p2.dimensionGroup.collapsed = true;
p2.dimensionGroup.depth = 1;
p2.dimensionGroup.range = range;
p2.fields = "*";
var req2 = Sheets.newRequest();
req2.updateDimensionGroup = p2;
// Create batch requests
var batchReq = Sheets.newBatchUpdateSpreadsheetRequest();
batchReq.requests = [req1, req2];
// Request
Sheets.Spreadsheets.batchUpdate(batchReq, ss.getId());
}