通过 API 将 R 连接到 Smartsheet?

问题描述 投票:0回答:2

我希望连接到“抓取”与我共享的 SmartSheet 文件并从表中检索结果。从那里我想将表格转换为数据框。

如何连接到 Smartsheets API?是使用 HTTP 还是 REST?如何将检索到的数据转换为数据框?

r web-scraping tidyverse httr smartsheet-api
2个回答
0
投票

您可以使用这样的函数从智能表中获取数据框。您只需向其传递工作表 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)
}

0
投票

我为 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)
© www.soinside.com 2019 - 2024. All rights reserved.