我希望连接到“抓取”与我共享的 SmartSheet 文件并从表中检索结果。从那里我想将表格转换为数据框。
如何连接到 Smartsheets API?是使用 HTTP 还是 REST?如何将检索到的数据转换为数据框?
您可以使用这样的函数从智能表中获取数据框。您只需向其传递工作表 ID(可以从工作表文件属性对话框中获取)和您的 api 密钥。此函数检索 csv 版本,然后加载它。
getsheet <- function(sheetid, apikey) {
authstring <- stringr::str_glue("Bearer {apikey}")
urlstring <- stringr::str_glue('https://api.smartsheet.com/2.0/sheets/{sheetid}')
h <- curl::new_handle()
curl::handle_setheaders(h,
"Authorization" = authstring,
"Accept" = "text/csv")
tmp <- tempfile()
curl::curl_download(urlstring, destfile = tmp, handle = h)
rawdata <- readr::read_csv(tmp, show_col_types = FALSE)
}
我为 smartsheet 创建了一个小型但可扩展的 API 客户端 R 库:https://github.com/cole-johanson/smartsheetr。
对于上述请求,请务必遵循README,然后使用:
library(smartsheetr)
library(dplyr)
sheet_name_of_interest = '<sheet name>'
your_sheets = ss_get_sheets()
sheet_id_of_interest = your_sheets |> filter(name == sheet_name_of_interest) |> pull(id)
ss_read_sheet(sheet_id_of_interest)