【问题标题】:Google Sheets API- How do I append new rows on TOP of table?(Android)Google Sheets API-如何在表的顶部追加新行?(Android)
【发布时间】:2018-04-03 01:15:15
【问题描述】:
在我的 Android 应用程序中,我想将一行(包含新的食品订单信息)附加到 google sheet 表的顶部。从https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/append 文档看来,我只能附加到表格的底部。但我确实需要从 TOP 追加新行,我怀疑这是不可能的。
我能够使用以下代码将行附加到底部:
String ORDER_SHEET_ID = "<my speardsheet id here>";
String ORDERS_RANGE_DINING = "DiningOrders!C5:I";
//...
this.mService.spreadsheets().values().append(ORDER_SHEET_ID,ORDERS_RANGE_DINING, body)
.setValueInputOption("RAW").setInsertDataOption("INSERT_ROWS").execute();
是否可以将行追加到表格的顶部?如何?谢谢!
【问题讨论】:
标签:
java
android
google-sheets-api
【解决方案1】:
这是我用来插入新行的。它创建行并使用粘贴命令设置数据,因此我可以在一次 HTTP 往返中完成所有操作。或者,您可以根据需要使用第二个请求更新数据。我不确定粘贴命令是否可以插入行,但这可行。
InsertDimensionRequest insertRow = new InsertDimensionRequest();
insertRow.setRange(new DimensionRange().setDimension("ROWS").setStartIndex(0).setEndIndex(1).setSheetId(sheetId));
PasteDataRequest data = new PasteDataRequest().setData("Data").setDelimiter("\t")
.setCoordinate(new GridCoordinate().setColumnIndex(0).setRowIndex(0).setSheetId(sheetId));
BatchUpdateSpreadsheetRequest r = new BatchUpdateSpreadsheetRequest().setRequests(Arrays.asList(
new Request().setInsertDimension(insertRow),
new Request().setPasteData(data)
));
BatchUpdateSpreadsheetResponse response = this.mService.spreadsheets().batchUpdate(SHEET_ID, r).execute();
【解决方案2】:
您可以参考此thread。
如果您需要在顶部(第一行)添加新行并复制
第一行的公式然后你需要复制公式
使用getFormulas() 和setFormulas() 函数。你可以
如果您的电子表格有标题,请将 firstRow 的值更改为 2
例如。
function addFirstRow() {
var firstRow = 1;
var sh = ss.getActiveSheet();
var lCol = sh.getLastColumn();
var range = sh.getRange(firstRow, 1, 1, lCol);
var formulas = range.getFormulas();
sh.insertRowsAfter(1, 1);
newRange = sh.getRange(firstRow, 1, 1, lCol);
newRange.setFormulas(formulas);
}
您也可以查看这个帖子:Having new entries show up top in google sheets.