下面的代码生成了一个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)
答案 0 :(得分:4)
快速方法是使用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>
)
有两种假设的方法可以做到这一点。
mailto
醇>
代码需要在用户端(可能在临时文件夹中)下载datatable
,然后将其附加到那里。
mailto
醇>
您需要已保存在服务器上的csv文件才能将其作为附件加载。您需要在renderUI()
中使用上述代码,并将文件从服务器传递到用户端。
有一个downloadHandler()
功能,允许用户从服务器下载可用于上述功能。
我从未尝试过在您尝试时传递附件,但上述逻辑应该允许您创建电子邮件,并让您找到附加文件的正确途径。