Чтение содержимого листа с помощью 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);
                }
            }
        }
    }
}
Другие вопросы по тегам