使用工作表 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。
我正在向 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。