闪亮 - 更新googlesheets

时间:2017-02-11 13:37:53

标签: r shiny

我正在创建一个闪亮的应用程序,从谷歌驱动器中的谷歌工作表文档中获取数据。在下面的MWE中,它只是提供了表格。

我希望应用程序显示google工作表的当前状态,因此我将invalidateLater添加到从google驱动器读取数据的反应式表达式。

缺点是每次表格都会刷新,即使数据没有改变。知道怎么处理吗?

MWE:

ui.R

library(shiny)
library(shinydashboard)


header <- dashboardHeader(title = "Title")


sidebar <- dashboardSidebar(
     sidebarMenu(
          menuItem("All", tabName = "All", icon = icon("fa fa-circle")
       )
    )
   )

body <- dashboardBody(

   tabItems(


       tabItem(tabName = "All",


            fluidRow(  box(width=12,title="Table",
                                       solidHeader = TRUE,status =    "primary",

                 dataTableOutput(outputId="Munt")         
                  #plotOutput(outputID="Munt")
           )
          )
       )

   ))


 ui <- dashboardPage(header, sidebar,body)

server.R

server<-function(input,output,session){

    session$onSessionEnded(function() {
     stopApp()
     })


    DF<-reactive({

       invalidateLater(60000,session=session)

        temp<-gs_read(muntgeg)

        temp})

   output$Munt<-renderDataTable(DF())

    }

global.R

library(shiny)
library(knitr)
library(googlesheets)

muntgeg<-gs_title("RA-Munten")

1 个答案:

答案 0 :(得分:1)

嗯,这种行为当然是强迫的:)但是,也许一个解决方案对你来说很好。 您可以将以下内容添加到服务器:

global <- reactiveValues(df = "")

observe({
   if(! identical(global$df,DF())) global$df = DF()
})

然后你有一个只在DF()实际发生变化时才更新的变量。 然后让output$Munt依赖于global$df

output$Munt<-renderDataTable(global$df)