[英]Possible problem with google sheets api v4
我正在尝试使用工作表 API ( https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/update ) 更新特定范围:
更新请求的主体必须是一个 ValueRange 对象,尽管唯一需要的字段是值。 如果指定了范围,则它必须与 URL 中的范围相匹配。 在 ValueRange 中,您可以选择指定其 majorDimension。 默认情况下,使用 ROWS。 如果指定了 COLUMNS,则每个内部数组将写入列而不是行。更新时,将跳过没有数据的值。 要清除数据,请使用空字符串 ("")。
当我尝试通过发送数据来更新特定单元格时,如下所示:
[
[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 5523, null, null, null, null, null, null, null, P],
[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 5526, null, null, null, null, null, null, null, P]
]
范围是“SheetName:A2.AA3”。
更新的单元格是 A2 B2 和 A3 B3。 知道为什么会这样吗? 谢谢你。
这是导致此问题的示例:该表最初是:
代码是:
String spreasheetId = "<SpreadsheetId>";
ValueRange valueRange = new ValueRange();
valueRange.setRange("Sheet15!A2:C4");
valueRange.setMajorDimension("ROWS");
List<Object> ob = Arrays.asList(null,"4",null);
List<Object> ob1 = Arrays.asList(null,"10",null);
List<List<Object>> list = Arrays.asList(ob,new ArrayList<>(),ob1);
valueRange.setValues(list);
sheetService.spreadsheets().values().update(spreasheetId, valueRange.getRange(), valueRange).setValueInputOption("RAW").execute();
我运行代码后的表格是这样的:
虽然它应该是:
从官方文档中,在setValues()
区域:
对于输入,支持的值类型有:bool、string 和 double。 空值将被跳过。 要将单元格设置为空值,请将字符串值设置为空字符串。
因此,设置为null
的值基本上不会被解释,您获得的结果就好像您的范围是按如下方式创建的:
List<Object> ob = Arrays.asList("4");
List<Object> ob1 = Arrays.asList("10");
List<List<Object>> list = Arrays.asList(ob,new ArrayList<>(),ob1);
valueRange.setValues(list);
要实现您在原始问题中定义的目标,您必须:
您的最终代码可能如下所示:
String spreadsheetId = "<SpreadsheetId>";
ValueRange currentRange = service.spreadsheets().values().get(spreadsheetId, "A2:C4").execute();
List<List<Object>> myValues = currentRange.getValues();
myValues.get(0).set(1, "4");
myValues.get(2).set(1, "10");
ValueRange resultRange = new ValueRange().setMajorDimension("ROWS").setValues(myValues);
service.spreadsheets().values().update(spreadsheetId, "A2:C4", resultRange).setValueInputOption("RAW").execute();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.