使用 Sheets API v4 添加仅包含公式的新行
Appending a new row with only formulas using Sheets API v4
我是表格的新手 API,遇到了很多错误。
我想在最后一行的基础上向 sheet 添加一个新行。这将包括复制格式并粘贴带有自动填充功能的公式,但不包括值。
这是我使用应用程序脚本得出的结论。
我确定我没有使用最好的方法,所以目前我已经
- 从范围 SUCCESS
中检索到公式
- 尝试使用
autoFillRequest
用 10 列填充下一行(试一试)。失败
我已经在评论中添加了类似 getFormulas 的请求,并通过自动填充请求向您展示了我目前拥有的内容。
我收到以下错误:
Invalid JSON payload received. Unknown name "source_and_destination" at 'requests[0]': Cannot find field.
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);
}
如果我错了请告诉我,但我考虑将任务分成多个请求
- 抓住公式
- 插入新行
- copy/paste fromat 到新行之前
- 粘贴公式
我的方向对吗?
非常感谢任何帮助。
问题:
Request
请求正文中缺少对象。
AutoFillRequest
有两个联合区域字段,而只有一个是可以接受的。
- GridRange 中的空范围选择。
解决方案:
- 修复上述语法错误
- 使用简单的 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);
}
参考文献:
我是表格的新手 API,遇到了很多错误。
我想在最后一行的基础上向 sheet 添加一个新行。这将包括复制格式并粘贴带有自动填充功能的公式,但不包括值。
这是我使用应用程序脚本得出的结论。 我确定我没有使用最好的方法,所以目前我已经
- 从范围 SUCCESS 中检索到公式
- 尝试使用
autoFillRequest
用 10 列填充下一行(试一试)。失败
我已经在评论中添加了类似 getFormulas 的请求,并通过自动填充请求向您展示了我目前拥有的内容。
我收到以下错误:
Invalid JSON payload received. Unknown name "source_and_destination" at 'requests[0]': Cannot find field.
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);
}
如果我错了请告诉我,但我考虑将任务分成多个请求
- 抓住公式
- 插入新行
- copy/paste fromat 到新行之前
- 粘贴公式
我的方向对吗? 非常感谢任何帮助。
问题:
Request
请求正文中缺少对象。AutoFillRequest
有两个联合区域字段,而只有一个是可以接受的。- GridRange 中的空范围选择。
解决方案:
- 修复上述语法错误
- 使用简单的 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);
}