使用工作表 api 和 android 添加行

Adding a row using sheets api with android

我正在向 sheet 添加一个 header 和一个公式,稍后我会附加数据。 table 创建有效,添加公式有效。我也可以稍后将行附加到此 table。添加 header 失败,我不明白为什么。

 SpreadsheetProperties properties = new SpreadsheetProperties();
        properties.setTitle("My formula");
        Spreadsheet requestBody = new Spreadsheet();
        requestBody.setProperties(properties);

        Object o1 = "a1", o2 = "b1", o3 = "c1",o4 ="d1";
        Object header = Arrays.asList(o1,o2,o3,o4);
        String rangeH = "A1:D1";

已编辑:这让我心碎
列表 dataH = new ArrayList<>();
dataH.add(header);

        List<List<Object>> valuesH = new ArrayList<>();
        valuesH.add(dataH);

        ValueRange valueRangeH = new ValueRange();
        valueRangeH.setMajorDimension("ROWS");
        valueRangeH.setRange(rangeH);
        valueRangeH.setValues(valuesH);

        Object formula = "=SUM(C1:C)";
        String range = "D2";

        List<Object> data = new ArrayList<>();
        data.add(formula);

        List<List<Object>> values = new ArrayList<>();
        values.add(data);

        ValueRange valueRange = new ValueRange();
        valueRange.setMajorDimension("ROWS");
        valueRange.setRange(range);
        valueRange.setValues(values);

        Spreadsheet response = null;
        AppendValuesResponse avResponse = null;

        try {

            Sheets.Spreadsheets.Create request = mService.spreadsheets().create(requestBody);
             response = request.execute();

            avResponse =  this.mService.spreadsheets().values()
                    .append(mSpreadsheetId, rangeH, valueRangeH)
                    .setValueInputOption("USER_ENTERED")
                    .execute();

            //adds the formula
            avResponse =  this.mService.spreadsheets().values()
                    .append(response.getSpreadsheetId(), range, valueRange)
                    .setValueInputOption("USER_ENTERED")
                    .execute();

只是为了避免人们浪费时间回答这个问题,我会的。虽然我确信我可以在一个请求中做到这一点:

 Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
        month ++;

        SpreadsheetProperties properties = new SpreadsheetProperties();
        properties.setTitle(calendar.getTime().toString());
        Spreadsheet requestBody = new Spreadsheet();
        requestBody.setProperties(properties);
        String rangeH = "A1:D1";

        List<List<Object>> valuesH = new ArrayList<>();
        Object o1 = "date", o2 = "description", o3 = "distance", o4 = "total";
        valuesH.add(Arrays.asList(o1,o2,o3,o4));

        ValueRange valueRangeH = new ValueRange();
        valueRangeH.setMajorDimension("ROWS");
        valueRangeH.setRange(rangeH);
        valueRangeH.setValues(valuesH);

        Object formula = "=SUM(C1:C)";
        String range = "D2";

        List<Object> data = new ArrayList<>();
        data.add(formula);

        List<List<Object>> values = new ArrayList<>();
        values.add(data);

        ValueRange valueRange = new ValueRange();
        valueRange.setMajorDimension("ROWS");
        valueRange.setRange(range);
        valueRange.setValues(values);

        Spreadsheet response = null;
        AppendValuesResponse avResponse = null;

        try {

            Sheets.Spreadsheets.Create request = mService.spreadsheets().create(requestBody);
             response = request.execute();

            avResponse =  this.mService.spreadsheets().values()
                    .append(response.getSpreadsheetId(), rangeH, valueRangeH)
                    .setValueInputOption("USER_ENTERED")
                    .execute();

            //adds the formula
            avResponse =  this.mService.spreadsheets().values()
                    .append(response.getSpreadsheetId(), range, valueRange)
                    .setValueInputOption("USER_ENTERED")
                    .execute();



        } catch (Exception ex) {
            onCancelled("dead");
            Log.e(TAG, ex.getMessage());
        }

我的错误是在将 header objects 添加到数组之前将其添加到 valuesH。