iInfo 資訊交流: LINE Notify 入門到進階應用(2) --- Excel傳送文字到LINE Notify

最新消息

[公告2014/05/30] 如有需要將部落格中,任何一篇文章的程式碼使用在商業用途,請與我聯繫。

[公告2015/04/26] Line版的 iInfo程式與投資應用 群組已上線想加入的朋友們,請先查看 "入群須知" 再與我聯繫 Line : aminwhite5168,加入請告知身分與回答 "入群須知" 的問題。

[公告2017/02/20] 近來有網友詢問 MultiCharts 與 Excel 畫冰火能量圖 (8)MultiCharts 與Excel 畫冰火能量圖(11) --- 更名「台股儀表板」 文章中教學檔案取得方式,有興趣的朋友可透過 Line了解詳情 (請勿以為是免費分享),Line : aminwhite5168。

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲,請盡快把握機會,歡迎券商、大專院校邀約講座。

[公告2018/06/01] 台指能量儀表板教學課程,課程如網頁內容 台北班:台指能量儀表板

2017年1月1日 星期日

LINE Notify 入門到進階應用(2) --- Excel傳送文字到LINE Notify

LINE Notify 入門到進階應用(1) --- 訊息傳送環境設定 介紹了如何建立傳送環境,筆者免不了就想用Excel VBA與Google Apps Script去傳送文字到Line Notify,今天先介紹用Excel VBA方式做說明。
這2天花了點時間與另一位朋友在研究如何透過Excel VBA串接LINE Notify傳送文字與圖片,這裡簡單介紹對LINE Notify傳送文字內容。

筆者用 Postman 與 Fiddler 這兩個工具做說明,讓讀者可以學會如何對LINE Notify傳送文字內容。

Step 1. 安裝好 Postman 與 Fiddler 這兩個工具。

Step 2. 開啟 Postman,分別在以下欄位進行設定。
  1. URL填入「https://notify-api.line.me/api/notify」,選擇POST
  2. Header 填入 「Authorization」,Value填入對應的 Token。
  3. 點選 application/x-www-form-urlencoded
  4. Key 填入 「message」,Value填入 哈囉! 大家好 ~~~~~

Step 3. 開啟 Fiddler,點選 ToolTelerik Fiddler Options,選擇HTTPS頁籤,將Decrypt HTTPS taffic打勾。


Step 4. 執行 Postman 的 Send,觀察 Fiddler 的變化。


Step 5. 查看Header,找出關鍵的內容。

Step 6. 轉成Excel VBA程式碼 。
Sub SendMessageToLineNotify()
    Dim oXML As Object
    Dim strToken As String
    Dim URL As String
        
    '指定的Line Notify Token
    strToken = "你的Token"
    
    'Line Notify的傳送訊息網址
    URL = "https://notify-api.line.me/api/notify"
        
    '中文字
    strMessage = "中文測試1234567890ABCabc"

    '建立Ajax物件
    Set oXML = CreateObject("Microsoft.XMLHTTP")
    With oXML
        '使用同步傳輸
        .Open "POST", URL, 0
        
        '設定傳送封包Header
        .SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        .SetRequestHeader "Authorization", "Bearer " & strToken
        
        '執行Ajax傳送
        .send "message=" & strMessage
  
        '顯示回報內容
        Debug.Print oXML.responseText
    End With
    
    '釋放物件資源
    Set oXML = Nothing
End Sub
程式碼第22行:由於使用application/x-www-form-urlencoded 為 Content-Type,所以不需要對中文字進行UTF-8的轉碼,使用multipart/form-data 為 Content-Type,才須對中文字進行UTF-8轉碼。
執行結果:

內建貼圖傳送


轉換成Excel VBA程式碼
Sub SendMessageToLineNotify()
    Dim oXML As Object
    Dim strToken As String
    Dim strMessage As String
    Dim URL As String
        
    '指定的Line Notify Token
    strToken = "你的Token"
    
    'Line Notify的傳送訊息網址
    URL = "https://notify-api.line.me/api/notify"
        
    '中文字
    strMessage = "中文測試1234567890ABCabc"
    
    strMessage = "message=" & strMessage & _
                 "&stickerPackageId=" & "1" & _
                 "&stickerId=" & "106"
    
    '建立Ajax物件
    Set oXML = CreateObject("Microsoft.XMLHTTP")
    With oXML
        '使用同步傳輸
        .Open "POST", URL, 0
        
        '設定傳送封包Header
        .SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        .SetRequestHeader "Authorization", "Bearer " & strToken
        
        '執行Ajax傳送
        .send (strMessage)
  
        '顯示回報內容
        Debug.Print oXML.responseText
    End With
    
    '釋放物件資源
    Set oXML = Nothing
End Sub
程式碼第28行:由於使用application/x-www-form-urlencoded 為 Content-Type,所以不需要對中文字進行UTF-8的轉碼,使用multipart/form-data 為 Content-Type,才須對中文字進行UTF-8轉碼。
與 Line Notify 溝通的Spec。

PS:Line內建貼圖對應stickerPackageId與stickerId列表 連結

執行結果:

參考資料: