Чтение содержимого листа с помощью SmartSheet Java SDK
Я пытаюсь читать данные с помощью API Smartsheet из Java для создания различных форматов, таких как отчеты и метки с данными из одной строки.
Я настроил свою среду IDE (NetBeans) так, чтобы примеры API работали для меня, но они все о создании новых листов и т. Д., И я не могу понять, как читать содержимое существующего листа.
Я бы подумал, что смогу прочитать весь лист в java-объекте в одной строке кода, но это кажется более сложным, и я нигде не могу найти никакой применимой документации. В Javadoc не указано, где / как получить соответствующие идентификаторы, что на самом деле делает какой-либо из объектов включения или исключения, какие требуются или являются необязательными и т. Д.
Есть ли примеры чтения содержимого листа из java?
Я знаю, что это довольно широкий вопрос, но я полностью озадачен.
2 ответа
Документация по API Smartsheet содержит пример кода, который показывает, как использовать Java SDK. В разделе " Образец кода Java " в документации описано, как установить соединение и т. Д. Затем каждая операция в разделе "Справочник по API" показывает пример кода (на вкладке "Java" на панели в правой части страницы). для выполнения операции с использованием Java SDK.
Для получения данных листа вы будете использовать операцию "Получить лист". Как описано в документации API, вот пример кода Java SDK для этой операции:
// Get sheet (omit all parameters).
smartsheet.sheetResources().getSheet(sheetId, null, null, null, null, null, null, null);
Параметр "sheetId" должен быть идентификатором листа, который вы хотите получить. Вы можете получить этот идентификатор программным способом (например, с помощью операции, такой как "Списки листов"), или вы можете получить его вручную через интерфейс Smartsheet, как описано в этой статье справки. Другие параметры (все установлены в "ноль" в примере кода) представляют 7 параметров, описанных в документации API для этой операции. Я полагаю, что intellisense в вашей IDE должен указывать последовательность этих параметров, ожидаемых функцией getSheet, а также действительные значения для каждого параметра (но документы API объяснят значение каждого параметра).
Спасибо Ким!
Для других вот что сработало для меня. Этот код получает список листов в моей учетной записи и отображает содержимое с именами, начинающимися с "Specs - ":
import com.smartsheet.api.Smartsheet;
import com.smartsheet.api.SmartsheetBuilder;
import com.smartsheet.api.SmartsheetException;
import com.smartsheet.api.models.Cell;
import com.smartsheet.api.models.Column;
import com.smartsheet.api.models.PagedResult;
import com.smartsheet.api.models.Row;
import com.smartsheet.api.models.Sheet;
import com.smartsheet.api.oauth.Token;
import java.util.List;
import java.util.Objects;
import java.util.logging.Level;
import java.util.logging.Logger;
public class SampleCode {
/*
Show the contenst of all sheets whose name starts with "Specs - "
*/
public static void main(String[] args) {
final String delimiter = ", ";
// Create a Smartsheet object with our Access Token
Token token = new Token();
token.setAccessToken(Private.TOKEN);
Smartsheet smartsheet = new SmartsheetBuilder().setAccessToken(token.getAccessToken()).build();
//get a paged list of all Sheets, using null Source Inclusion & Pagination parameters
PagedResult<Sheet> homeSheets = new PagedResult<>();
try {
homeSheets = smartsheet.sheetResources().listSheets(null, null);
} catch (SmartsheetException ex) {
Logger.getLogger(SampleCode.class.getName()).log(Level.SEVERE, null, ex);
}
// get a Java List<Sheet> from the PagedResult<Sheet>
List<Sheet> sheetInfoList = homeSheets.getData();
// Loop through each sheet in the list
for (Sheet sheetInfo : sheetInfoList) {
String sheetName = sheetInfo.getName();
// Show data for all sheets with names that match our pattern
if (sheetName.startsWith("Specs - ")) {
// get the sheet object, with no optional includes or excludes
Sheet theSheet = null;
try {
theSheet = smartsheet.sheetResources().getSheet(sheetInfo.getId(), null, null, null, null, null, null, null);
} catch (SmartsheetException ex) {
Logger.getLogger(SampleCode.class.getName()).log(Level.SEVERE, null, ex);
}
// Print the sheets name
System.out.println("\nSheet: " + theSheet.getName() + "\n");
// Print the column titles as a delimited line of text.
List<Column> columnList = theSheet.getColumns();
String columnHeader = null;
for (Column col : columnList) {
columnHeader = columnHeader == null ? col.getTitle() : columnHeader + delimiter + col.getTitle();
}
System.out.println(columnHeader);
// Print each row as a delimited line of text.
List<Row> rowList = theSheet.getRows();
for (Row row : rowList) {
List<Cell> cellList = row.getCells();
String rowOutput = null;
for (Cell cell : cellList) {
String cellOutput = Objects.toString(cell.getValue() != null ? cell.getValue() : cell.getDisplayValue());
rowOutput = rowOutput == null ? cellOutput : rowOutput + delimiter + cellOutput;
}
System.out.println(rowOutput);
}
}
}
}
}