Сохранить блестящий вывод в Googlesheets

У меня есть блестящее приложение, которое производит вывод, который я хотел бы сохранить в Googlesheet. Приложение генерирует значения, основанные на пользовательском вводе, и я создал рабочий макет (настолько сокращенный, насколько я мог), чтобы повторить ошибку, как показано в поле фрагмента кода ниже.

Я также создал отдельную учетную запись Google для примера Googlesheet

Логин для учетной записи Google:

Имя пользователя: public.thurston@gmail.com
Пароль: notapassword123
GoogleSheet: https://docs.google.com/spreadsheets/d/1y7dFTqUX3pLJ_VA-jjaWzMQydOVpwz8brPDMGpDCavk/edit

library(shiny)
library(googlesheets)

#Code to download a new API token commented here:
#token = gs_auth(new_user = TRUE)
#saveRDS(token, "googlesheets_token.rds")

#Login to the following Google account:
#Username: public.thurston@gmail.com
#Password: notapassword123
#GoogleSheet: https://docs.google.com/spreadsheets/d/1y7dFTqUX3pLJ_VA-jjaWzMQydOVpwz8brPDMGpDCavk/edit#gid=0

ui <- shinyUI(navbarPage("Example",
  tabPanel("Example",
    sidebarLayout(
      sidebarPanel(
       numericInput("number", label = "I am the number input", value = 10),
       actionButton("saveresult", label = "Refresh & Save Result")        
      ), 
      mainPanel(
        h2(strong("Input value:")),
        h4(textOutput("text_number"))
      )
    )
  )
)
)

server <- shinyServer(function(input, output) {
  values <- reactiveValues()
  observe({
    input$saveresult
    values$number <- input$number
  })
  output$text_number <- renderText({
    input$saveresult
    paste("Number:", isolate(input$number))
  })
  observeEvent(input$saveresult, {
    gs_auth(token = "googlesheets_token.rds")
    gs_add_row(ss = gs_key("1y7dFTqUX3pLJ_VA-jjaWzMQydOVpwz8brPDMGpDCavk"), 
               ws = "Sheet1",
               input = output$text_number
    )
  })
})

shinyApp(ui = ui, server = server)

Когда я пытаюсь сохранить вывод в Googlesheet, я получаю следующую ошибку.

Warning: Error in $.shinyoutput: Reading objects from shinyoutput object not allowed.
Stack trace (innermost first):
    72: $.shinyoutput
    71: $
    70: nrow
    69: gs_add_row
    68: observeEventHandler [#13]
     4: <Anonymous>
     3: do.call
     2: print.shiny.appobj
     1: <Promise>
ERROR: [on_request_read] connection reset by peer

1 ответ

Решение

Вы не можете прочитать выходное значение output$text_number так вместо input = output$text_number ты можешь использовать input = values$number или же input = input$number

Другие вопросы по тегам