Сохранить блестящий вывод в 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