0

Я хочу создать пустой лист и вставить некоторые данные. Я тестировал этот код:Вставьте данные в новый лист Google

Sheets service = getSheetsService(); 

     // Fist create empty new sheet 
     List<Request> requests = new ArrayList<>(); 

     requests.add(new Request().setAddSheet(new AddSheetRequest() 
      .setProperties(new SheetProperties() 
       .setTitle("scstc")))); 

     BatchUpdateSpreadsheetRequest body = new BatchUpdateSpreadsheetRequest().setRequests(requests); 
     BatchUpdateSpreadsheetResponse response = service.spreadsheets().batchUpdate(spreadsheetId, body).execute(); 

     // Second add data into new sheet 
     List<List<Object>> writeData = new ArrayList<>(); 

     List<Object> dataRow = new ArrayList<>(); 
     dataRow.add("data 1 " + timestamp); 
     dataRow.add("data 2 " + timestamp); 
     dataRow.add("data 3 " + timestamp); 
     dataRow.add("data 4 " + timestamp); 
     dataRow.add("data 5 " + timestamp); 
     writeData.add(dataRow); 

     ValueRange oRange = new ValueRange(); 
     oRange.setRange(range); // 
     oRange.setValues(writeData); 

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

код работает, но у меня есть следующие ограничения:

Кулак Пакетный вызов создает пустой лист. Второй пакетный вызов вставляет данные теста в неправильный лист, всегда первый.

Как создать новый лист и вставить данные одним звонком? Если это невозможно, как я могу вставить данные в новый лист?

ответ

0

В строке oRange.setRange(range); // отсутствует комментарий, поясняющий, что должна делать линия. У вас нет строки, которая присваивает значение range значению, поэтому я не уверен, что вы имели в виду.

Если вы хотите записать значения в новый лист, вам необходимо убедиться, что range указывает на этот лист, используя range = "scstc" (который является названием листа, который вы добавили).

В качестве альтернативы, вы можете сделать все, что в одном запросе BatchUpdateSpreadsheet, указав sheetId в SheetProperties объекте, а затем также добавление UpdateCellsRequest, указывающие на тот же sheetId, с rowData заполненным, как вы хотели бы его.

+0

Можете ли вы показать мне полный пример, пожалуйста? –

+0

Для более простой версии исправление заключается в том, чтобы назначить диапазон заголовку вашего листа - я не уверен, что вы хотите использовать. Для более сложной версии (но меньше запросов) см. [Образцы] (https://developers.google.com/sheets/api/samples/) в документации. –

Смежные вопросы