好的,我花了好几个小时才最终弄清楚,结果证明比从头开始构建 Ajax 请求更容易。希望为他人节省时间和时间,这是对我有用的解决方案。
先决条件:我使用 Quickstart tutorial of the Google Sheets API 从表中读取数据,这非常复杂,但对我来说效果很好。
在教程结束后,我需要修改一些东西
1、换行
private static final List<String> SCOPES =
Arrays.asList(SheetsScopes.SPREADSHEETS_READONLY);
到
private static final List<String> SCOPES =
Arrays.asList(SheetsScopes.SPREADSHEETS);
出于显而易见的原因(因为我们要写入表格,而不仅仅是读取它。
2,删除存储在您的用户目录中名为 /.credentials/ 的文件夹中的存储凭据
还有一个注意事项:似乎有一个方法叫做
spreadsheets.values.update()
但我无法使其正常工作,因为它需要设置 valueInputOption 参数,而且数小时的搜索不足以找到可以设置它的位置。
所以,最后,我得到了一个名为
的方法
spreadsheets.values.batchUpdate()
这是代码完整方法,它为我将"Hello World!" 写入表格单元格(至于导入,我使用与上面快速入门教程中相同的方法):
void WriteExample() throws IOException {
Sheets service = getSheetsService();
List<Request> requests = new ArrayList<>();
List<CellData> values = new ArrayList<>();
values.add(new CellData()
.setUserEnteredValue(new ExtendedValue()
.setStringValue("Hello World!")));
requests.add(new Request()
.setUpdateCells(new UpdateCellsRequest()
.setStart(new GridCoordinate()
.setSheetId(0)
.setRowIndex(0)
.setColumnIndex(0))
.setRows(Arrays.asList(
new RowData().setValues(values)))
.setFields("userEnteredValue,userEnteredFormat.backgroundColor")));
BatchUpdateSpreadsheetRequest batchUpdateRequest = new BatchUpdateSpreadsheetRequest()
.setRequests(requests);
service.spreadsheets().batchUpdate(spreadsheetId, batchUpdateRequest)
.execute();
}
SheetId 是您正在编写的工作表的 ID(在某个电子表格中的第一个工作表始终为 0,您可以从其他人的 URL 中获取它:它是 #gid= 之后的部分
如果您想了解更复杂的问题,例如格式化或使用公式,您可以 - 在这种情况下,使用 Java example provided here。
希望对你有帮助,
Zsolt