Изменение ячеек на листе с помощью Java и API Smartsheet
У меня есть не большая, но неразрешимая для меня проблема. Мой код Java подключается к Smartsheet и считывает список листов в папке (по идентификатору папки), затем копирует из папки все листы (оставляя отчеты и информационные панели), изменяя имя листов и вставляя их в другую папку. Я использую Коррето 17.
Как я могу изменить значение ячейки на любом листе по коду. Мне нужно изменить только 1 ячейку для каждого работающего кода, так что это не должно быть гениальным циклом. Я хочу понять основы этого.
Ниже я добавил 2 класса частично после копирования и переименования. Все работает отлично, прежде чем я попытаюсь изменить ячейку. Если поможет: ячейка разблокирована, valueType text_number, не формула, а просто текст, но в листе другие ячейки со значениями, они с формулами / они заблокированы).
Я могу прочитать значение в ячейке, но не могу его установить.
public void projectFolderCreate(String projectID_Value) throws SmartsheetException {
Smartsheet smartsheet = SmartsheetFactory.createDefaultClient(API);
System.out.println("Folder working. Loading folder: " + getFolderID());
Folder workFolder = smartsheet.folderResources().getFolder(getFolderID(), null);
for (var element : workFolder.getSheets()) {
System.out.println(element.getId());
ContainerDestination containerDestination = new ContainerDestination().setDestinationType(DestinationType.FOLDER).setDestinationId(8775808614459268L).setNewName(element.getName().replace("Project_Name", projectID_Value));
Sheet sheet = smartsheet.sheetResources().copySheet(element.getId(),containerDestination,EnumSet.of(SheetCopyInclusion.DATA,SheetCopyInclusion.CELLLINKS));
if (sheet.getName().endsWith("Metadata")) {
Sheet newSheet = smartsheet.sheetResources().getSheet(sheet.getId(),null,null,null,null,null,null,null);
long newSheetId = newSheet.getId();
System.out.println("ID of the New Sheet : " + newSheetId);
Column projIDcolumn = newSheet.getColumns().get(1);
System.out.println(projIDcolumn.getTitle());
Row firstRow = newSheet.getRows().get(2);
firstRow.getCells().get(2).setValue(new CellDataItem().setObjectValue(projectID_Value));
firstRow.getColumnByIndex(projIDcolumn.getIndex());
Cell s = newSheet.getRows().get(2).getCells().get(1).setDisplayValue(projectID_Value);
}System.out.println(sheet.getName() + " was created");
}
}
ProjectFolderWorking(String projectID) throws SQLException, SmartsheetException {
String folderID;
LikeAWall law = new LikeAWall(1);
DataBase db = new DataBase(law.getPickDB());
db.setApi();
SmartIM smartIM = new SmartIM(db.getApi());
folderID = String.valueOf(SmartIM.getFolderID());
System.out.println("FolderID: " + folderID);
setProjectID(projectID);
smartIM.projectFolderCreate(getProjectID());
}
Я уверен, что ссылка на переменную была хорошей, потому что я пробовал геттеры, но сеттеры этого не работают, а компилируются без каких-либо исключений/ошибок/багов/проблем и грубого результата.
Ниже приведены методы, которые я пробовал.
smartsheet.sheetResources().getSheet(sheet.getId(),null,null,null,null,null,null,null).getRows().get(2).getCells().set(1,null);
smartsheet.sheetResources().getSheet(sheet.getId(),null,null,null,null,null,null,null).getRows().get(2).getCells().get(1).setDisplayValue(projectID_Value)
smartsheet.sheetResources().getSheet(sheet.getId(),null,null,null,null,null,null,null).getRows().get(2).getCells().get(1).setValue(projectID_Value.toString) / and getBytes()
smartsheet.sheetResources().getSheet(sheet.getId(),null,null,null,null,null,null,null).getRows().get(2).getCells().get(1).setObjectValue()
Это не имело смысла, но я просто сломался. Я пытался сделать все вышеперечисленное с такими частями, как:
Sheet sh = lallalalla;
Column s = sh.lalallalala;
Rows w = sh.lalallala;
Cell = w.getCells().get(lalallaa);