2014-09-05 5 views
-1

나는 샤이니를 사용하여 here 함수를 사용하여 새로운 형식의 Google 스프레드 시트를 읽고 분석하려고했습니다.Google Shreadsheets에 대한 연결이 Shiny Server에서 열리지 않습니다.

로컬에서 제대로 작동하지만 shinyapps.io에 배포하면 작동하지 않습니다.

절대 경로에 대한 테스트에서 알려진 오탐의 한 가지 문제점은 콘솔에서 배포를 강제하면 해결됩니다. 그러나 한 번 나는 주위를 둘러 보았다 봤는데, 사람들이 많은 이유에 대한 자바 스크립트 오류 덤프를 얻을 것을 볼 수 있고, 내가 본 가장 가까운 곳이었다 내가이 오류

label, label<-Error in file(con, "r") : cannot open the connection 

와 자바 스크립트 덤프 경고를 받고 있어요 업로드 누군가 RCurl을 사용해야했지만 그게 도움이되지 못했습니다. 또한 URL에 https가 있다는 것을 알고 있으므로 문제가되지 않습니다. 내가 읽고있는 스프레드 쉬트는 확실히 웹에 게시됩니다. 그런 것 같은 명백한 것은 그것이 지역에서 일하지 않게 만들었을 것입니다.

업데이트 : 여기에 함수 코드가 복사됩니다.

library(XML) 

cleanGoogleTable <- function(dat, table=1, skip=0, 

ncols=NA, nrows=-1, header=TRUE, dropFirstCol=NA){ 

if(!is.data.frame(dat)) { 

    dat <- dat[[table]] } if(is.na(dropFirstCol)) { 
    firstCol <- na.omit(dat[[1]]) 
    if(all(firstCol == ".") || all(firstCol== as.character(seq_along(firstCol)))) { 

     dat <- dat[, -1] 
    } } else if(dropFirstCol) { 
    dat <- dat[, -1] } if(skip > 0){ 
    dat <- dat[-seq_len(skip), ] } if(nrow(dat) == 1) return(dat) if(nrow(dat) >= 2){ 
    if(all(is.na(dat[2, ]))) dat <- dat[-2, ] } if(header && nrow(dat) > 1){ 
    header <- as.character(dat[1, ]) 
    names(dat) <- header 
    dat <- dat[-1, ] } # Keep only desired columns if(!is.na(ncols)){ 

    ncols <- min(ncols, ncol(dat)) 
    dat <- dat[, seq_len(ncols)] } # Keep only desired rows if(nrows > 0){ 
    nrows <- min(nrows, nrow(dat)) 
    dat <- dat[seq_len(nrows), ] } # Rename rows rownames(dat) <- seq_len(nrow(dat)) dat } 

readGoogleSheet <- function(url, na.string="", header=TRUE){ 
    stopifnot(require(XML)) 
    # Suppress warnings because Google docs seems to have incomplete final line 
    suppressWarnings({ 
    doc <- paste(readLines(url), collapse=" ") 
    }) 
    if(nchar(doc) == 0) stop("No content found") 
    htmlTable <- gsub("^.*?(<table.*</table).*$", "\\1>", doc) 
    ret <- readHTMLTable(htmlTable, header=header, stringsAsFactors=FALSE, as.data.frame=TRUE) 
    lapply(ret, function(x){ x[ x == na.string] <- NA; x}) 
} 

답변

3

문제는 내가 로컬에있어 무엇 인 Windows에서 https을 지원 url() 호출 readLines()를 사용하는 readGoogleSheet() 기능입니다. Google은 물론 끝이 https입니다.

는 내가이 변경

+doc <- content(GET(url), as="text") 
-doc <- paste(readLines(url), collapse=" ") 

을 만들어 문제가 해결 듯 실행에 도착합니다. @hrbmstr에서 일반적인 아이디어를 얻었습니다. here

+0

이 정확한 문제가 있었는데, readGoogleSheet 함수의 지시에 따라 변경했으며 이제 ShinyApps에 배포 할 때 작동합니다. –

+0

오류없이 Google 스프레드 시트를 읽기 위해 함수를 성공적으로 사용했습니다. 그러나 스프레드 시트의 처음 100 행만 읽혀집니다 (행은 수백 행입니다). 비슷한 한계를 겪었습니까? 이 문제를 어떻게 해결할 수 있을지 제안 해주세요. 웹 쿼리에서이 100 행 제한을 나타내는 다른 게시물을 발견했습니다. http://stackoverflow.com/questions/28772346/using-an-excel-web-query-to-transfer-data-from-a-google-sheet -limits-to-100-rows. –