Google电子表格,使用/java添加数据
我从“Ashwin Karangutkar”中获取了下面的代码。它会写入谷歌电子表格中的单元格 但我真正想做的,是把这些数据附加到工作表中,或者写在第一行。我见过api的AppendCellsRequest函数,但我不太确定如何集成它。有人能帮我吗 先谢谢你 亲切问候, 尼科斯 Aswin的代码示例Google电子表格,使用/java添加数据,java,google-spreadsheet-api,google-sheets-api,Java,Google Spreadsheet Api,Google Sheets Api,我从“Ashwin Karangutkar”中获取了下面的代码。它会写入谷歌电子表格中的单元格 但我真正想做的,是把这些数据附加到工作表中,或者写在第一行。我见过api的AppendCellsRequest函数,但我不太确定如何集成它。有人能帮我吗 先谢谢你 亲切问候, 尼科斯 Aswin的代码示例 public static void setValue(String SheetName,String RowStart, String RowEnd) throws IOException{
public static void setValue(String SheetName,String RowStart, String RowEnd) throws IOException{
// Build a new authorized API client service.
Sheets service = getSheetsService();
// Prints the names and majors of students in a sample spreadsheet:
String spreadsheetId = "17PQyEPayrHSIgvPtrfZtItuUcArhvjDy-G68Xg02s3s";
String range = SheetName+"!"+RowStart+":"+RowEnd;
Integer sheetLocationNumber = 0;
List<List<Object>> arrData = getData();
ValueRange oRange = new ValueRange();
oRange.setRange(range); // I NEED THE NUMBER OF THE LAST ROW
oRange.setValues(arrData);
List<ValueRange> oList = new ArrayList<>();
oList.add(oRange);
BatchUpdateValuesRequest oRequest = new BatchUpdateValuesRequest();
oRequest.setValueInputOption("RAW");
oRequest.setData(oList);
BatchUpdateValuesResponse oResp1 = service.spreadsheets().values().batchUpdate(spreadsheetId, oRequest).execute();
// service.spreadsheets().values().update (spreadsheetId, range,) ;
//return request;
}
public static List<List<Object>> getData () {
publicstaticvoidsetvalue(stringsheetname、stringrowstart、stringrowend)抛出IOException{
//构建新的授权API客户端服务。
Sheets服务=getSheetsService();
//在示例电子表格中打印学生姓名和专业:
字符串电子表格ID=“17PQYEPayRHSIGVPTRFZTITUCARHVJDY-G68Xg02s3s”;
字符串范围=SheetName+“!”+RowStart+“:”+RowEnd;
整数sheetLocationNumber=0;
List arrData=getData();
ValueRange橙色=新的ValueRange();
oRange.setRange(range);//我需要最后一行的编号
橙色。设定值(arrData);
List-oList=new-ArrayList();
添加(橙色);
BatchUpdateValuesRequest oRequest=新的BatchUpdateValuesRequest();
oRequest.setValueInputOption(“原始”);
oRequest.setData(oList);
BatchUpdateValuesResponse oResp1=service.spreadsheets().values().batchUpdate(spreadsheetId,oRequest).execute();
//service.spreadsheets().values().update(电子表格ID,范围,);
//返回请求;
}
公共静态列表getData(){
//将数据添加到水平轴(同一行)
List data1=new ArrayList();
数据1.add(“示例”);
数据1.add(“示例2”);
System.out.println(“值”);
//将数据添加到垂直轴(新行)
List data=new ArrayList();
data.add(data1);
返回数据;
}
如果要附加数据(并且不关心单元格的格式或其他属性),最简单的方法是使用spreadsheets.values.append。例如,使用指南是
用法类似于values.update或values.get。如果要附加数据(并且不关心单元格的格式或其他属性),最简单的方法是使用spreadsheets.values.append。例如,使用指南是
用法类似于values.update或values.get。我能够使用java将数据附加到我自己的Google电子表格中,我从这个stackflow问题中获取答案,并将其更改为添加数据,我有下面的代码示例 我承认,这是非常糟糕的,它不是可缩放的atm,我将制作一个hashMap/列表,将值与头匹配,这样我就可以正确地更新字段,而不是像我是atm一样盲目地更新字段
public static void main(String[] args) throws Exception {
Sheets service = getSheetsService();
String spreadSheetID = "xx";
Integer sheetID = 0;
String defectReferenceValue = "Defect 9999";
Double defectIDValue = 9999.0;
String areaValue = "RandomArea";
String screenValue = "";
String fieldValue = "";
String reqValue = "";
String ruleValue = "";
String fieldIDValue = "";
String defectDescriptionValue = "";
String screenShotValue = "ScreenShotLink";
String dateValue = dateForReport();
List<RowData> rowData = new ArrayList<RowData>();
List<CellData> cellData = new ArrayList<CellData>();
CellData defectReferenceField = new CellData();
defectReferenceField.setUserEnteredValue(new ExtendedValue().setStringValue(defectReferenceValue));
defectReferenceField.setUserEnteredFormat(new CellFormat().setNumberFormat(new NumberFormat().setType("DATE")));
cellData.add(defectReferenceField);
CellData defectIDField = new CellData();
defectIDField.setUserEnteredValue(new ExtendedValue().setNumberValue(defectIDValue));
cellData.add(defectIDField);
CellData areaField = new CellData();
areaField.setUserEnteredValue(new ExtendedValue().setStringValue(areaValue));
cellData.add(areaField);
CellData screenField = new CellData();
screenField.setUserEnteredValue(new ExtendedValue().setStringValue(screenValue));
cellData.add(screenField);
CellData fieldField = new CellData();
fieldField.setUserEnteredValue(new ExtendedValue().setStringValue(fieldValue));
cellData.add(fieldField);
CellData reqField = new CellData();
reqField.setUserEnteredValue(new ExtendedValue().setStringValue(reqValue));
cellData.add(reqField);
CellData ruleField = new CellData();
ruleField.setUserEnteredValue(new ExtendedValue().setStringValue(ruleValue));
cellData.add(ruleField);
CellData fieldIDField = new CellData();
fieldIDField.setUserEnteredValue(new ExtendedValue().setStringValue(fieldIDValue));
cellData.add(fieldIDField);
CellData defectDescriptionField = new CellData();
defectDescriptionField.setUserEnteredValue(new ExtendedValue().setStringValue(defectDescriptionValue));
cellData.add(defectDescriptionField);
CellData screenShotField = new CellData();
screenShotField.setUserEnteredValue(new ExtendedValue().setStringValue(screenShotValue));
cellData.add(screenShotField);
CellData dateField = new CellData();
dateField.setUserEnteredValue(new ExtendedValue().setStringValue(dateValue));
cellData.add(dateField);
rowData.add(new RowData().setValues(cellData));
BatchUpdateSpreadsheetRequest batchRequests = new BatchUpdateSpreadsheetRequest();
BatchUpdateSpreadsheetResponse response;
List<Request> requests = new ArrayList<Request>();
AppendCellsRequest appendCellReq = new AppendCellsRequest();
appendCellReq.setSheetId(sheetID);
appendCellReq.setRows(rowData);
appendCellReq.setFields("userEnteredValue,userEnteredFormat.numberFormat");
requests = new ArrayList<Request>();
requests.add(new Request().setAppendCells(appendCellReq));
batchRequests = new BatchUpdateSpreadsheetRequest();
batchRequests.setRequests(requests);
response = service.spreadsheets().batchUpdate(spreadSheetID, batchRequests).execute();
System.out.println("Request \n\n");
System.out.println(batchRequests.toPrettyString());
System.out.println("\n\nResponse \n\n");
System.out.println(response.toPrettyString());
}
publicstaticvoidmain(字符串[]args)引发异常{
Sheets服务=getSheetsService();
字符串spreadSheetID=“xx”;
整数sheetID=0;
字符串defectReferenceValue=“Defect 9999”;
双缺陷IDValue=9999.0;
字符串areaValue=“随机区域”;
字符串screenValue=“”;
字符串fieldValue=“”;
字符串值=”;
字符串ruleValue=“”;
字符串fieldIDValue=“”;
字符串defectDescriptionValue=“”;
字符串screenShotValue=“ScreenShotLink”;
字符串dateValue=dateForReport();
List rowData=new ArrayList();
List cellData=newarraylist();
CellData defectReferenceField=新CellData();
defectReferenceField.setUserEnteredValue(新的ExtendedValue().setStringValue(defectReferenceValue));
defectReferenceField.setUserEnteredFormat(新的CellFormat().setNumberFormat(新的NumberFormat().setType(“日期”));
cellData.add(defectReferenceField);
CellData defectIDField=新CellData();
defectIDField.setUserEnteredValue(新的ExtendedValue().setNumberValue(defectIDValue));
cellData.add(缺陷字段);
CellData areaField=新的CellData();
areaField.setUserEnteredValue(新的ExtendedValue().setStringValue(areaValue));
cellData.add(区域字段);
CellData screenField=新的CellData();
screenField.setUserEnteredValue(新的ExtendedValue().setStringValue(screenValue));
cellData.add(屏幕字段);
CellData fieldField=新的CellData();
fieldField.setUserEnteredValue(新的ExtendedValue().setStringValue(fieldValue));
cellData.add(fieldField);
CellData reqField=新的CellData();
reqField.setUserEnteredValue(新的ExtendedValue().setStringValue(reqValue));
cellData.add(reqField);
CellData规则字段=新的CellData();
ruleField.setUserEnteredValue(新的ExtendedValue().setStringValue(ruleValue));
cellData.add(规则字段);
CellData fieldIDField=新的CellData();
fieldIDField.setUserEnteredValue(新的ExtendedValue().setStringValue(fieldIDValue));
cellData.add(fieldfieldfield);
CellData defectDescriptionField=新CellData();
defectDescriptionField.setUserEnteredValue(新的ExtendedValue().setStringValue(defectDescriptionValue));
cellData.add(缺陷描述字段);
CellData screenShotField=新建CellData();
screenShotField.setUserEnteredValue(新的ExtendedValue().setStringValue(screenShotValue));
cellData.add(屏幕快照字段);
CellData dateField=新的CellData();
dateField.setUserEnteredValue(新的ExtendedValue().setStringValue(dateValue));
cellData.add(dateField);
添加(新的rowData().setValues(cellData));
BatchUpdateSpreadsheetRequest batchRequests=新的BatchUpdateSpreadsheetRequest();
BatchUpdateSpreadsheetResponse;
列表请求=新建ArrayList();
AppendCellsRequest appendCellReq=新的AppendCellsRequest();
附录要求设置表(图纸ID);
appendCellReq.setRows(行数据);
appendCellReq.setFields(“userEnteredValue,userEnter
List<List<Object>> data = new ArrayList<List<Object>>();
data.add (data1);
return data;
}
public static void main(String[] args) throws Exception {
Sheets service = getSheetsService();
String spreadSheetID = "xx";
Integer sheetID = 0;
String defectReferenceValue = "Defect 9999";
Double defectIDValue = 9999.0;
String areaValue = "RandomArea";
String screenValue = "";
String fieldValue = "";
String reqValue = "";
String ruleValue = "";
String fieldIDValue = "";
String defectDescriptionValue = "";
String screenShotValue = "ScreenShotLink";
String dateValue = dateForReport();
List<RowData> rowData = new ArrayList<RowData>();
List<CellData> cellData = new ArrayList<CellData>();
CellData defectReferenceField = new CellData();
defectReferenceField.setUserEnteredValue(new ExtendedValue().setStringValue(defectReferenceValue));
defectReferenceField.setUserEnteredFormat(new CellFormat().setNumberFormat(new NumberFormat().setType("DATE")));
cellData.add(defectReferenceField);
CellData defectIDField = new CellData();
defectIDField.setUserEnteredValue(new ExtendedValue().setNumberValue(defectIDValue));
cellData.add(defectIDField);
CellData areaField = new CellData();
areaField.setUserEnteredValue(new ExtendedValue().setStringValue(areaValue));
cellData.add(areaField);
CellData screenField = new CellData();
screenField.setUserEnteredValue(new ExtendedValue().setStringValue(screenValue));
cellData.add(screenField);
CellData fieldField = new CellData();
fieldField.setUserEnteredValue(new ExtendedValue().setStringValue(fieldValue));
cellData.add(fieldField);
CellData reqField = new CellData();
reqField.setUserEnteredValue(new ExtendedValue().setStringValue(reqValue));
cellData.add(reqField);
CellData ruleField = new CellData();
ruleField.setUserEnteredValue(new ExtendedValue().setStringValue(ruleValue));
cellData.add(ruleField);
CellData fieldIDField = new CellData();
fieldIDField.setUserEnteredValue(new ExtendedValue().setStringValue(fieldIDValue));
cellData.add(fieldIDField);
CellData defectDescriptionField = new CellData();
defectDescriptionField.setUserEnteredValue(new ExtendedValue().setStringValue(defectDescriptionValue));
cellData.add(defectDescriptionField);
CellData screenShotField = new CellData();
screenShotField.setUserEnteredValue(new ExtendedValue().setStringValue(screenShotValue));
cellData.add(screenShotField);
CellData dateField = new CellData();
dateField.setUserEnteredValue(new ExtendedValue().setStringValue(dateValue));
cellData.add(dateField);
rowData.add(new RowData().setValues(cellData));
BatchUpdateSpreadsheetRequest batchRequests = new BatchUpdateSpreadsheetRequest();
BatchUpdateSpreadsheetResponse response;
List<Request> requests = new ArrayList<Request>();
AppendCellsRequest appendCellReq = new AppendCellsRequest();
appendCellReq.setSheetId(sheetID);
appendCellReq.setRows(rowData);
appendCellReq.setFields("userEnteredValue,userEnteredFormat.numberFormat");
requests = new ArrayList<Request>();
requests.add(new Request().setAppendCells(appendCellReq));
batchRequests = new BatchUpdateSpreadsheetRequest();
batchRequests.setRequests(requests);
response = service.spreadsheets().batchUpdate(spreadSheetID, batchRequests).execute();
System.out.println("Request \n\n");
System.out.println(batchRequests.toPrettyString());
System.out.println("\n\nResponse \n\n");
System.out.println(response.toPrettyString());
}
String content ="just now";
List<Object> data1 = new ArrayList<>();
data1.add (content);
List<List<Object>> data = new ArrayList<>();
data.add (data1);
ValueRange valueRange=new ValueRange();
valueRange.setValues(data);
service.spreadsheets().values().
append(spreadsheetId, range, valueRange)
.setValueInputOption("RAW")
.execute();