如何从Excel加载项发送电子邮件(js)

时间:2016-08-16 23:04:58

标签: office-js

我试图将我广泛使用的VBA宏转换为JS / HTML。它采用当前选定的范围,检查内容是否与电子邮件地址相似,然后向这些人撰写电子邮件。

我的框架已经运行,但无法找到如何从我的Excel插件发送电子邮件。我似乎无法从Excel主机访问Outlook api(office.mailbox)。

使用mailto有效但尺寸限制不够,因为我指定了长身体,可能还有数百个收件人。

window.location.href = "mailto:user@example.com

在VBA中,宏看起来像这样:

Sub EmailSelected()
    Dim OutlookApp As Object
    Dim Mess As Object, Recip As String
    Dim selRange As Range
    ' If there is only one cell selected, don't call SpecialCells, it messes up
    If selection.Count = 1 Then
        Set selRange = selection
    Else
        Set selRange = selection.SpecialCells(xlCellTypeVisible)
    End If

    ' If the first cell contains an email address, send as email.
    If InStr(selRange.Item(1).Value, "@") > 0 Then
        For Each c In selRange.Cells
            Recip = Recip & c.Value & ";"
        Next
        Set OutlookApp = CreateObject("Outlook.Application")
        Set Mess = OutlookApp.CreateItem(olMailItem)
        If selRange.Count = 1 Then
            Mess.To = Recip
        Else
            Mess.BCC = Recip
        End If

        Mess.Display
    Else
        ' google the cell contents
        For Each c In selRange.Cells
            Recip = Recip & c.Value & " "
        Next
        ActiveWorkbook.FollowHyperlink ("http://www.google.ca/search?q=" & Recip)
    End If
End Sub

另一种选择是从我的excel加载项调用宏(次优但可以工作)。但是,我也无法找到办法。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

Mailto是理想的,但如果数据太多,那么您可以通过Microsoft Graph使用Outlook REST API。以下是有关发送邮件的API的文档:https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/message_send。这里的优点是您可以更好地控制整个过程,包括实际的Send操作(而不仅仅是创建新消息)。主要的缺点是你可以用这种方法编写更多的代码。