0

我正在尝试使用 Java 中的 Smartsheet API 读取数据以创建不同的格式,例如带有一行数据的报告和标签。

我已经设置了我的 IDE (NetBeans),以便 API 示例为我工作,但它们都是关于创建新工作表等的,我不知道如何阅读现有工作表的内容。

我原以为我可以在一行代码中将整个工作表读入一个 java 对象,但它看起来比这更复杂,而且我在任何地方都找不到任何适用的文档。Javadoc 没有说明在何处/如何获取相关 ID、包含或排除对象实际做什么、哪些是必需的或可选的等。

是否有任何从 java 中读取工作表内容的示例?

我知道这是一个有点宽泛的问题,但我完全被难住了。

4

2 回答 2

2

谢谢金!

对于其他人来说,这对我有用。此代码获取我帐户中的工作表列表并显示名称以“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);
                }
            }
        }
    }
}
于 2016-01-10T15:41:22.823 回答
0

Smartsheet API 文档包含演示如何使用 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”参数应该是您要检索的工作表的 ID。您可以通过编程方式获取此 ID(例如,通过使用“List Sheets”之类的操作),或者您可以通过 Smartsheet UI 手动获取它,如本帮助文章中所述。其他参数(在示例代码中均设置为“null”)代表 API 文档中描述的用于此操作的 7 个参数。我想你的 IDE 中的智能感知应该指示getSheet函数预期的那些参数的顺序,以及每个参数的有效值(但 API 文档将解释每个参数的含义)。

于 2016-01-09T17:47:21.767 回答