我正在尝试创建一个闪亮的应用,该应用使用谷歌电子表格中外部可用的信息,我将其下载到临时的.csv文件中。该应用程序在我的本地计算机上正常运行,但当我尝试将其推送到shinyapps.io时,该应用程序失败。我尝试使用一个简单的示例重新创建下面的错误。闪亮的应用程序可以在这里找到:https://n8sty.shinyapps.io/test/。我已经复制了在本地工作的server.R和ui.R文件。
我认为问题在于服务器无法以与本地计算机相同的方式处理外部Google工作表文件的下载。有谁知道如何在闪亮的应用程序中使用谷歌文档?
require(shiny)
shinyUI(fluidPage(
mainPanel(
tableOutput("table")
)
))
require(shiny)
td <- tempdir()
tf <- tempfile(pattern = 'test', tmpdir = td, fileext = '.csv')
url <- 'https://docs.google.com/spreadsheets/d/1c1ZI0P0ydunm-wc1eb3-jYbWfwMZQc4eAyWlHJut2wY/export?usp=sharing&format=csv'
download.file(url, tf, method = 'auto', quiet = TRUE)
df <- read.csv(tf)
shinyServer(function(input, output) {
output$table <- renderTable({
df
})
})
由于
答案 0 :(得分:1)
经过深入搜索SO以及网络的其他广阔世界,我现在想出的是什么。一个快速的警告,它看起来像开发中的包更改和谷歌更改其文档的格式,几个月前工作的代码阅读谷歌表不再有效。
我从fetchGoogle(...)
包的开发版本的mosaic
函数中灵感定义了以下函数。
loadGoogSheet <- function(URL, key = NULL,
stringsAsFactors = default.stringsAsFactors(), na.strings = "NA",
colClasses = NA, blank.lines.skip = TRUE
)
{
#.try_require("RCurl")
if (missing(URL) & !is.null(key))
URL = paste("https://docs.google.com/spreadsheet/pub?key=",
key, "&single=TRUE&gid=0", "&output=csv", sep = "")
s = RCurl::getURLContent(URL)
foo = textConnection(s)
b = read.csv(foo,
stringsAsFactors = stringsAsFactors,
na.strings = na.strings,
colClasses = colClasses,
blank.lines.skip = blank.lines.skip
)
close(foo)
return(b)
}
根据您的机器处理证书的方式,您可能需要在上述代码之前包含这段代码:
require(RCurl)
options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")))