R 使用TableTools或其他工具在Shiny中添加电子邮件按钮

R 使用TableTools或其他工具在Shiny中添加电子邮件按钮,r,datatable,shiny,tabletools,R,Datatable,Shiny,Tabletools,下面的代码生成一个DataTable输出,我希望使用电子邮件按钮将其发送到电子邮件,类似于下面创建的导出按钮。有没有一种简单的方法可以添加一个按钮,这样当您单击时,它会弹出Microsoft Outlook,以附件的形式发送数据表,比如csv格式 另外,请单击和以帮助回答类似的问题 #Load required packages require(shiny) #Create a dataframe df <- data.frame(random=1:160) server <-

下面的代码生成一个DataTable输出,我希望使用电子邮件按钮将其发送到电子邮件,类似于下面创建的导出按钮。有没有一种简单的方法可以添加一个按钮,这样当您单击时,它会弹出Microsoft Outlook,以附件的形式发送数据表,比如csv格式

另外,请单击和以帮助回答类似的问题

#Load required packages
require(shiny)

#Create a dataframe
df <- data.frame(random=1:160)

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

    #Display df using DataTable and apply desired options
    output$display <- renderDataTable({df}, 
           option=list(pageLength=100,
                       "dom" = 'T<"clear">lfrtip',
                       "tableTools" = list(
                        "sSwfPath" = "//cdn.datatables.net/tabletools/2.2.3/swf/copy_csv_xls_pdf.swf",
                        "aButtons" = list(list("sExtends" = "csv","oSelectorOpts"=list("page"="all"),"sButtonText" = "Export","aButtons" ="csv")))         
       )

   )
}

ui <- shinyUI(fluidPage(

    #Add a title
    h1('Testing TableTools'),

    #Add required JS libraries
    tagList(
        singleton(tags$head(tags$script(src='//cdn.datatables.net/1.10.4/js/jquery.dataTables.min.js',type='text/javascript'))),
        singleton(tags$head(tags$script(src='//cdn.datatables.net/tabletools/2.2.3/js/dataTables.tableTools.min.js',type='text/javascript'))),
        singleton(tags$head(tags$link(href='//cdn.datatables.net/tabletools/2.2.3/css/dataTables.tableTools.css',rel='stylesheet',type='text/css')))
            ),


        mainPanel(
           #Display results
           dataTableOutput('display')
                 )      


))

shinyApp(ui = ui, server = server)
#加载所需的包
需要(有光泽)
#创建一个数据帧

df一个快速的方法是使用
mailto
(它与Outlook很好地配合使用)

mailto
需要位于
HTML()
标记中,才能呈现它

HTML(
<a href="mailto:hello@rshiny.com?
body='Hello,World!  Check out my data.'
&subject='Data'
&attachment='\\myfolder\shinyData.csv'">click here for email!</a>
)
HTML(
)
有两种假设的方法可以做到这一点

  • 在ui.R中设置
    mailto
  • 代码需要在用户端下载
    datatable
    (可能在temp文件夹中),并将其附加到那里

  • 在server.R中设置
    mailto
  • 您需要已保存在服务器上的csv文件才能将其作为附件加载。您需要在
    renderUI()
    中使用上述代码,并将文件从服务器传递到用户端

    有一个
    downloadHandler()
    函数,允许用户从服务器下载可用于上述用途的内容


    我从未尝试过在您尝试时传递附件,但是上述逻辑应允许您创建电子邮件,并使您走上附加文件的正确路径。

    我将您的解决方案放入服务器函数体中,当然更改了电子邮件和附件参数,但在运行应用程序时出错。这是否必须包装在反应函数中?我不认为它必须包装在
    reactive()
    中。“错在哪里?”哈密尔顿·莱克不幸的是,我认为你的答案有错<代码>