使用工作表 API v4 追加仅包含公式的新行



我对Sheets API很陌生,有很多错误。

我想根据最后一行将新行附加到工作表中。这将包括复制格式和粘贴带有自动填充的公式,而不是值。

这是我使用应用程序脚本提出的。 我确定我没有使用最好的方法,所以目前我已经

  • 从范围中检索公式 成功
  • 尝试使用autoFillRequest用 10 列填充下一行(只是尝试(。失败

我已经在评论中加入了类似 getFormula 的请求,并向您展示了我目前对自动填充请求所拥有的内容。

我收到以下错误:

收到的 JSON 有效负载无效。"请求[0]"处的名称未知"source_and_destination":找不到字段。

function insertNewRow(){
var ssId = "my_spreadsheet_id"
/*var params = {
ranges: ['Feuille1!21:21'],
valueRenderOption: 'FORMULA'
};
var values = Sheets.Spreadsheets.Values.batchGet(ssId, params);
var valueRange = Sheets.newValueRange();
valueRange.majorDimension = "ROWS";
valueRange.values = values.valueRanges[0].values;
Logger.log(values.valueRanges[0].values[0].length);
valueRange.range= 'Feuille1!22:22'
//var req = Sheets.Spreadsheets.Values.update(valueRange , ssId, 'Feuille1!22:22', {
//  valueInputOption: 'USER_ENTERED'
//})*/
var AFreq = Sheets.newAutoFillRequest();
AFreq.range = Sheets.newGridRange();
AFreq.range.startRowIndex = 1;
AFreq.range.startColumnIndex = 0;
AFreq.range.endRowIndex = 2;
AFreq.range.endColumnIndex = 10;
AFreq.range.sheetId = 0;
AFreq.sourceAndDestination = Sheets.newSourceAndDestination();
AFreq.sourceAndDestination.dimension = "ROWS";
AFreq.sourceAndDestination.fillLength = 10;
AFreq.sourceAndDestination.source = Sheets.newGridRange();
AFreq.sourceAndDestination.source.startRowIndex = 0;
AFreq.sourceAndDestination.source.startColumnIndex = 0;
AFreq.sourceAndDestination.source.endColumnIndex = 10   
AFreq.sourceAndDestination.source.endRowIndex = 1;
AFreq.sourceAndDestination.source.sheetId = 0;
var req = Sheets.newBatchUpdateSpreadsheetRequest();
req.requests = [AFreq];
Sheets.Spreadsheets.batchUpdate(req, ssId);
}

告诉我我是否错了,但我想将任务分成多个请求

  1. 获取公式
  2. 插入新行
  3. 将前面的 fromat 复制/粘贴到新行
  4. 粘贴公式

我走对了方向吗? 任何帮助将不胜感激。

问题:

  • 请求正文中缺少Request对象。
  • AutoFillRequest有两个并集区域字段,而只有一个是可以接受的。
  • 网格范围中的空区域选择。

溶液:

  • 修复上述语法错误
  • 使用纯 JSON 请求正文轻松识别此类错误

示例脚本:

function autoFill() {
var ssId = 'my_spreadsheet_id';
var req = {//request body    
requests: [ //requests array    
{//request Object
autoFill: { //autoFill request
//range OR sourceAndDestination;
//equal to selecting Sheet1!A1:J10 and clicking autoFill from menu
range: {//GridRange
sheetId: 0,
startRowIndex: 0,
endRowIndex: 10, //end exclusive
startColumnIndex: 0,
endColumnIndex: 10,
},
},
},
],
};
Sheets.Spreadsheets.batchUpdate(req, ssId);
}

引用:

  • 请求正文
  • 自动填充请求
  • 网格范围

最新更新