我正在尝试使用Java中的Smartsheet API来读取数据,以创建不同的格式,例如报告和数据。带有一行数据的标签。
我已经设置了我的IDE(NetBeans),以便API示例适合我,但它们都是关于创建新工作表等,我无法弄清楚如何阅读现有工作表的内容。
我原以为我可以在一行代码中将整个工作表读入一个java对象,但它看起来比这更复杂,而且我无法在任何地方找到任何适用的文档。 Javadoc没有说明在何处/如何获取相关ID,任何包含或排除对象实际执行的操作,或者哪些是必需的或可选的等等。
是否有任何从java中读取工作表内容的例子?
我知道这是一个广泛的问题,但我完全难过了。
答案 0 :(得分: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);
}
}
}
}
}
答案 1 :(得分:0)
Smartsheet API文档包含演示如何使用Java SDK的示例代码。文档中的Java Sample Code部分描述了如何建立连接等。然后,“API参考”部分中的每个操作都显示示例代码(位于右侧面板的“Java”选项卡中) page)用于使用Java SDK执行操作。
要获取工作表数据,您将使用"Get Sheet" operation。如API文档中所述,这是该操作的Java SDK示例代码:
// Get sheet (omit all parameters).
smartsheet.sheetResources().getSheet(sheetId, null, null, null, null, null, null, null);
“sheetId”参数应该是您要检索的工作表的ID。您可以以编程方式获取此ID(例如,通过使用“列表表”等操作) - 或者您可以通过Smartsheet UI手动获取它,如this help article中所述。其他参数(示例代码中都设置为“null”)表示此操作的API文档中描述的7个参数。我想IDE中的intellisense应该指出 getSheet 函数所期望的那些参数的顺序,以及每个参数的有效值(但API文档将解释每个参数的含义)。