Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google电子表格,使用/java添加数据_Java_Google Spreadsheet Api_Google Sheets Api - Fatal编程技术网

Google电子表格,使用/java添加数据

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{

我从“Ashwin Karangutkar”中获取了下面的代码。它会写入谷歌电子表格中的单元格

但我真正想做的,是把这些数据附加到工作表中,或者写在第一行。我见过api的AppendCellsRequest函数,但我不太确定如何集成它。有人能帮我吗

先谢谢你

亲切问候,

尼科斯

Aswin的代码示例

 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();