使用代码完成功能,我想出了以下代码:
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());
但是,如果我使用Sheets 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")
问题: 如何设置资源参数的格式?
答案 0 :(得分:0)
哦,我知道了。这是代码:
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 Explorer复制代码。我会尽力记住这一点。如果一位知识渊博的志愿者有更好的解决方案,我将不做任何选择。
答案 1 :(得分:0)
尽管我不确定这是否对您有用,但作为另一种方法,您也可以使用这些方法通过高级Google服务表格创建请求。当您尝试在脚本编辑器上使用“高级Google服务表格”时,自动填充功能可能会显示一些方法。使用这种方法时,可以通过脚本编辑器的自动完成来知道所需的参数。因此,我认为这将使我们轻松创建请求。作为示例,可以像此示例一样创建答案中的请求正文。
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
后,发现它与您的请求正文相同。例如,当创建一个组时,为了折叠该组,该示例脚本如何?在此示例脚本中,它创建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());
}